Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 6572|Risposta: 4

[.NET Core] [Combattimento vero e proprio]. Generatore di query NET/C# SQL basato su sqlkata

[Copiato link]
Pubblicato il 2022-10-12 22:07:53 | | | |
Requisiti: Ho letto un articolo su SQL su Internet, "SqlKata - Conveniente e facile da usare SQL Query Builder", e penso che questo plugin sia molto utile, puoi impostare dinamicamente nomi e condizioni di tabelle per generare le relative istruzioni SQL sicure, e il front-end chiama sqlkata per eseguire operazioni di database tramite informazioni visive di configurazione dei moduli, e puoi configurare un'interfaccia senza programmare o codificare rigidamente. Questo è simile al mio precedente utilizzo di jOOQ nei progetti di sviluppo Java.

SqlKata

SqlKata Query Generator è un potente generatore di query SQL scritto in C#. È sicuro e indipendente dal frame. Ispirato dai migliori query builder disponibili, come Laravel Query Builder e Knex.

Un potente generatore dinamico di query SQL che supporta Sql Server, MySql, PostgreSql, Oracle e Firebird.

Indirizzo GitHub:Il login del link ipertestuale è visibile.
Indirizzo ufficiale del documento:Il login del link ipertestuale è visibile.

SQL Server prepara i dati di test

Per prima cosa, usiamo il database MSSQL per creare una nuova tabella di test e generare alcuni dati di test, lo script è il seguente:



Crea una nuova app console .NET Core 3.1

Aggiungi i pacchetti SqlKata e SqlKata.Execution, Microsoft.Data.SqlClient usando Nuget con il seguente comando:


Il codice console è il seguente:

exec sp_executesql N'SELECT * DA [TestTableSize] DOVE [MyKeyField] = @p0 ORDINA PER (SELECT 0) OFFSET @p1 RIGHE OTTIENI SOLO @p2 RIGHE SUCCESSIVE', N'@p0 nvarchar(4000),@p1 bigint,@p2 int',@p0= N'0000000088',@p1=0,@p2=10



Prova a inviarne unaUna tabella che non esiste, l'errore è il seguente:

Eccezione non risolta. Microsoft.Data.SqlClient.SqlException (0x80131904): Nome oggetto non valido 'Hei'.
   at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
   at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
   at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   presso Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   presso Microsoft.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   a Microsoft.Data.SqlClient.SqlDataReader.get_MetaData()
   at Microsoft.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, StringStringRisetOptions, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean isAsync, timeout Int32, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   presso Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, TaskCompletionSource'1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry, Metodo string)
   presso Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, metodo String)
   su Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(comportamento di CommandBehavior)
   su Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(comportamento CommandBehavior)
   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(comportamento di comando)
   at Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior) in /_/Dapper/SqlMapper.cs:line 1066
   su Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, comando CommandDefinition, Type effectiveType)+MoveNext() in /_/Dapper/SqlMapper.cs:line 1094
   su System.Collections.Generic.List'1..ctor(IEnumerable'1 collection)
   su System.Linq.Enumerable.ToList[TSource](IEnumerable'1 fonte)
   at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable'1 commandTimeout, Nullable'1 commandType) in /_/ Dapper/SqlMapper.cs:riga 734
   at SqlKata.Execution.QueryFactory.Get[T](Query query, transazione IDbTransaction, timeout Nullable'1)
   at SqlKata.Execution.QueryExtensions.Get[T](Query query, transazione IDbTransaction, timeout Nullable'1)
   at SqlKata.Execution.QueryExtensions.Get(Query query, transazione IDbTransaction, timeout Nullable'1)
   su SqlKataDemo.Program.Main(String[] args) in C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\SqlKataDemo\Program.cs:riga 20
ClientConnectionId:49158892-5a24-4aa8-8249-232fba2674da
Errore Numero: 208, Stato: 1,Classe: 16


Se vogliamo solo generare istruzioni sql tramite SqlKata e non vogliamo eseguirle, il codice è il seguente:



Query più avanzate

Tabella JOIN


Inserire dati


Dati aggiornati


Elimina dati

(Fine)





Precedente:Le etichette dei moduli di memoria Hynix (Hynix) e Micron (Micron) sono spiegate in dettaglio
Prossimo:ESXI 7 verifica il modello di memoria e le dimensioni dell'host server
Pubblicato il 13-10-2022 15:19:47 |
Imparare a imparare, una cosa buona
Pubblicato il 14-10-2022 11:07:18 |
Impara a imparare
 Padrone di casa| Pubblicato il 2025-1-2 12:15:02 |
LINQKit è una suite gratuita di estensioni per utenti avanzati di LINQ verso SQL e Entity Framework. :Il login del link ipertestuale è visibile.
 Padrone di casa| Pubblicato il 2025-1-2 14:20:57 |
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com