Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 6572|Răspunde: 4

[.NET Core] [Luptă propriu-zisă]. Generator de interogări NET/C# SQL bazat pe sqlkata

[Copiază linkul]
Postat la 2022-10-12 22:07:53 | | | |
Cerințe: Am citit un articol despre sqlkata pe Internet, "SqlKata - Convenience and Easy to Use SQL Query Builder", și consider că acest plugin este foarte util, poți seta dinamic denumirile și condițiile tabelelor pentru a genera instrucțiuni SQL securizate corespunzătoare, iar front-end-ul apelează sqlkata pentru a efectua operațiuni de bază de date prin informații vizuale de configurare a formularelor, și poți configura o interfață fără programare sau hardcodare. Acest lucru este similar cu utilizarea mea anterioară a jOOQ în proiectele de dezvoltare Java.

SqlKata

Generatorul de interogări SqlKata este un generator puternic de interogări SQL scris în C#. Este sigură și independentă de cadru. Inspirat de cele mai bune constructoare de interogări disponibile, precum Laravel Query Builder și Knex.

Un generator dinamic puternic de interogări SQL care suportă Sql Server, MySql, PostgreSql, Oracle și Firebird.

Adresă GitHub:Autentificarea cu hyperlink este vizibilă.
Adresa documentului oficial:Autentificarea cu hyperlink este vizibilă.

SQL Server pregătește datele de testare

În primul rând, folosim baza de date MSSQL pentru a crea un nou tabel de testare și a genera unele date de test, scriptul fiind următorul:



Creează o nouă aplicație de consolă .NET Core 3.1

Adaugă pachetele SqlKata și SqlKata.Execution, Microsoft.Data.SqlClient folosind Nuget cu următoarea comandă:


Codul consolei este următorul:

EXEC sp_executesql N'SELECT * DE LA [TestTableSize], UNDE [MyKeyField] = @p0 ORDONEAZĂ DUPĂ (SELECT 0) OFFSET @p1 RÂNDURILE PREIAU DOAR @p2 RÂNDURI',N'@p0 nvarchar(4000),@p1 bigint,@p2 int',@p0= N'0000000088',@p1=0,@p2=10



Încearcă să trimiți o interogareUn tabel care nu există, eroarea este următoarea:

Excepție nerezolvată. Microsoft.Data.SqlClient.SqlException (0x80131904): Nume de obiect invalid '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)
   la Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   la Microsoft.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   la Microsoft.Data.SqlClient.SqlDataReader.get_MetaData()
   la Microsoft.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   la Microsoft.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean isAsync, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   la Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, TaskCompletionSource'1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry, metoda String)
   la Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, metoda String)
   la Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(comportamentul CommandBehavior)
   la Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   la System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(ComportamentulComandă)
   la Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior) în /_/Dapper/SqlMapper.cs:line 1066
   la Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, comanda CommandDefinition, Type effectiveType)+MoveNext() în /_/Dapper/SqlMapper.cs:line 1094
   la System.Collections.Generic.List'1..ctor(IEnumerable'1 collection)
   la System.Linq.Enumerable.ToList[TSource](IEnumerable'1 sursă)
   at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, tranzacție IDbTransaction, Boolean buffered, Nullable'1 commandTimeout, Nullable'1 commandType) în /_/ Dapper/SqlMapper.cs:linia 734
   at SqlKata.Execution.QueryFactory.Get[T](Interogare interogare, tranzacție IDbTransaction, timeout Nullable'1)
   la SqlKata.Execution.QueryExtensions.Get[T](Interogare interogare, tranzacție IDbTransaction, timeout Nullable'1)
   at SqlKata.Execution.QueryExtensions.Get(Interogare interogare, tranzacție IDbTransaction, timeout Nullable'1)
   la SqlKataDemo.Program.Main(String[] args) în C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\SqlKataDemo\Program.cs:linia 20
ClientConnectionId:49158892-5a24-4aa8-8249-232fba2674da
Număr de eroare: 208, Stat: 1, Clasă: 16


Dacă vrem doar să generăm instrucțiuni sql prin SqlKata și nu vrem să le executăm, codul este următorul:



Interogări mai avansate

Tabelul JOIN


Inserarea datelor


Date de actualizare


Șterge datele

(Sfârșit)





Precedent:Etichetele modulelor de memorie Hynix (Hynix) și Micron (Micron) sunt explicate în detaliu
Următor:ESXI 7 verifică modelul de memorie și dimensiunea gazdei serverului
Postat pe 2022-10-13 15:19:47 |
Să înveți să înveți, bine
Postat la 2022-10-14 11:07:18 |
Învață să înveți
 Proprietarul| Postat la 2025-1-2 12:15:02 |
LINQKit este o suită gratuită de extensii pentru utilizatorii avansați LINQ către SQL și Entity Framework. :Autentificarea cu hyperlink este vizibilă.
 Proprietarul| Postat la 2025-1-2 14:20:57 |
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com