Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 6572|Antwort: 4

[.NET Core] [Tatsächlicher Kampf]. NET/C# SQL-Abfragegenerator basierend auf sqlkata

[Link kopieren]
Veröffentlicht am 12.10.2022, 22:07:53 | | | |
Anforderungen: Ich habe einen Artikel über SQLKATA im Internet gelesen, "SqlKata – Convenient and Easy to Use Sql Query Builder", und ich finde, dass dieses Plugin sehr nützlich ist: Man kann dynamisch Tabellennamen und Bedingungen festlegen, um entsprechende sichere SQL-Anweisungen zu generieren, und das Front-End ruft sqlkata auf, um Datenbankoperationen über visuelle Formularkonfigurationsinformationen durchzuführen, und man kann eine Benutzeroberfläche ohne Programmieren und Hardcoding konfigurieren. Das ähnelt meiner früheren Verwendung von jOOQ in Java-Entwicklungsprojekten.

sqlKata

Der SqlKata Query Generator ist ein leistungsstarker SQL-Abfragegenerator, der in C# geschrieben ist. Es ist sicher und frame-agnostisch. Inspiriert von den besten verfügbaren Abfrage-Buildern wie Laravel Query Builder und Knex.

Ein leistungsstarker dynamischer SQL-Abfragegenerator, der SQL Server, MySql, PostgreSQL, Oracle und Firebird unterstützt.

GitHub-Adresse:Der Hyperlink-Login ist sichtbar.
Offizielle Dokumentadresse:Der Hyperlink-Login ist sichtbar.

SQL Server bereitet die Testdaten vor

Zuerst verwenden wir die MSSQL-Datenbank, um eine neue Testtabelle zu erstellen und einige Testdaten zu generieren; das Skript ist wie folgt:



Erstelle eine neue .NET Core 3.1 Konsolen-App

Fügen Sie die SqlKata- und SqlKata.Execution-Pakete sowie Microsoft.Data.SqlClient mit Nuget mit folgendem Befehl hinzu:


Der Konsolencode lautet wie folgt:

exec sp_executesql N'SELECT * AUS [TestTableSize] WOBEI [MyKeyField] = @p0 ORDNEN NACH (SELECT 0) OFFSET @p1 ZEILEN NUR @p2 ZEILEN',N'@p0 nvarchar(4000),@p1 bigint,@p2 int',@p0= N'0000000088',@p1=0,@p2=10



Versuche, eine Anfrage zu sendenEine Tabelle, die nicht existiert, der Fehler ist wie folgt:

Unbearbeitete Ausnahme. Microsoft.Data.SqlClient.SqlException (0x80131904): Ungültiger Objektname 'Hei'.
   at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException, Boolean breakConnection, Action'1 wrapCloseInAction)
   bei Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException-Ausnahme, Boolean breakConnection, Action'1 wrapCloseInAction)
   at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   bei Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   bei Microsoft.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   bei Microsoft.Data.SqlClient.SqlDataReader.get_MetaData()
   bei Microsoft.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   bei 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)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, TaskCompletionSource'1 completion, Int32 timeout, Task& task, Boolean&usedCache, Boolean asyncWrite, Boolean inRetry, String-Methode)
   bei Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String-Methode)
   bei Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
   bei Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   bei System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   bei Dapper.SqlMapper.ExecuteReaderWithFlagsFallback (IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior) in /_/Dapper/SqlMapper.cs:line 1066
   bei Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, CommandDefinition-Befehl, Type effectiveType)+MoveNext() in /_/Dapper/SqlMapper.cs:line 1094
   bei System.Collections.Generic.List'1..ctor (IEnumerable'1 Collection)
   bei System.Linq.Enumerable.ToList[TSource](IEnumerable'1 Quelle)
   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: Zeile 734
   at SqlKata.Execution.QueryFactory.Get[T](Query Query, IDbTransaction, Nullable'1 timeout)
   at SqlKata.Execution.QueryExtensions.Get[T](Abfrageanfrage, IDbTransaction-Transaktion, Nullable'1 Timeout)
   at SqlKata.Execution.QueryExtensions.Get(Query query, IDbTransaction-Transaktion, Nullable'1 timeout)
   at SqlKataDemo.Program.Main(String[] args) in C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\SqlKataDemo\Program.cs:Zeile 20
ClientConnectionId:49158892-5a24-4aa8-8249-232fba2674da
Fehlernummer:208,Staat:1,Klasse:16


Wenn wir nur SQL-Anweisungen über SqlKata generieren wollen und sie nicht ausführen wollen, sieht der Code wie folgt aus:



Fortgeschrittenere Abfragen

JOIN-Tabelle


Daten einfügen


Aktualisierungsdaten


Daten löschen

(Ende)





Vorhergehend:Die Bezeichnungen der Hynix (Hynix) und Micron (Micron) Speichermodule werden ausführlich erklärt
Nächster:ESXI 7 überprüft das Speichermodell und die Größe des Server-Hosts
Veröffentlicht am 13.10.2022, 15:19:47 |
Lernen zu lernen, das ist gut
Veröffentlicht am 14.10.2022, 11:07:18 |
Lernen lernen
 Vermieter| Veröffentlicht am 2.1.2025, 12:15:02 |
LINQKit ist eine kostenlose Suite von Erweiterungen für LINQ für fortgeschrittene Nutzer von SQL und Entity Framework. :Der Hyperlink-Login ist sichtbar.
 Vermieter| Veröffentlicht am 2.1.2025, 14:20:57 |
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com