Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 6572|Απάντηση: 4

[.NET Πυρήνας] [Πραγματική μάχη]. Γεννήτρια ερωτημάτων NET/C# SQL βασισμένη σε sqlkata

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 2022-10-12 22:07:53 | | | |
απαιτήσεις: Διάβασα ένα άρθρο σχετικά με το sqlkata στο Διαδίκτυο, "SqlKata - Βολικό και εύκολο στη χρήση Sql Query Builder", και πιστεύω ότι αυτό το πρόσθετο είναι πολύ χρήσιμο, μπορείτε να ορίσετε δυναμικά ονόματα και συνθήκες πινάκων για να δημιουργήσετε αντίστοιχες ασφαλείς δηλώσεις SQL και το front-end καλεί το sqlkata να εκτελεί λειτουργίες βάσης δεδομένων μέσω οπτικών πληροφοριών διαμόρφωσης φόρμας και μπορείτε να διαμορφώσετε μια διεπαφή χωρίς προγραμματισμό και σκληρή κωδικοποίηση. Αυτό είναι παρόμοιο με την προηγούμενη χρήση του jOOQ σε έργα ανάπτυξης Java.

SqlKata

Το SqlKata Query Generator είναι ένα ισχυρό πρόγραμμα δημιουργίας ερωτημάτων Sql γραμμένο σε C#. Είναι ασφαλές και αγνωστικό ως προς το πλαίσιο. Εμπνευσμένο από τα κορυφαία διαθέσιμα προγράμματα δημιουργίας ερωτημάτων, όπως το Laravel Query Builder και το Knex.

Μια ισχυρή δυναμική δημιουργία ερωτημάτων Sql που υποστηρίζει Sql Server, MySql, PostgreSql, Oracle και Firebird.

Διεύθυνση GitHub:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Επίσημη διεύθυνση εγγράφου:Η σύνδεση με υπερσύνδεσμο είναι ορατή.

Ο SQL Server προετοιμάζει τα δεδομένα δοκιμής

Αρχικά, χρησιμοποιούμε τη βάση δεδομένων MSSQL για να δημιουργήσουμε έναν νέο πίνακα δοκιμών και να δημιουργήσουμε ορισμένα δεδομένα δοκιμής, το σενάριο έχει ως εξής:



Δημιουργία νέας εφαρμογής κονσόλας .NET Core 3.1

Προσθέστε τα πακέτα SqlKata και SqlKata.Execution, Microsoft.Data.SqlClient χρησιμοποιώντας το Nuget με την ακόλουθη εντολή:


Ο κωδικός της κονσόλας έχει ως εξής:

exec sp_executesql N'SELECT * ΑΠΟ [TestTableSize] ΟΠΟΥ [MyKeyField] = @p0 ΠΑΡΑΓΓΕΛΙΑ ΚΑΤΑ (ΕΠΙΛΟΓΗ 0) ΜΕΤΑΤΟΠΙΣΗ @p1 ΣΕΙΡΕΣ FETCH NEXT @p2 ROWS ONLY',N'@p0 nvarchar(4000),@p1 bigint,@p2 int',@p0= N'0000000088',@p1=0,@p2=10



Δοκιμάστε να υποβάλετε ερώτημα σε έναΈνας πίνακας που δεν υπάρχει, το σφάλμα έχει ως εξής:

Ανεπίλυτη εξαίρεση. Microsoft.Data.SqlClient.SqlException (0x80131904): Μη έγκυρο όνομα αντικειμένου 'Hei'.
   at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
   στο Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
   στο Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   στο Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   στο Microsoft.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   στο Microsoft.Data.SqlClient.SqlDataReader.get_MetaData()
   στο Microsoft.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   στο 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'1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry, String method)
   στο Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   στο Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(συμπεριφορά CommandBehavior)
   στο Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(συμπεριφορά CommandBehavior)
   στο System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(συμπεριφορά CommandBehavior)
   στο Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, συμπεριφορά CommandBehavior) στο /_/Dapper/SqlMapper.cs:line 1066
   στο Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, εντολή CommandDefinition, Type effectiveType)+MoveNext() στο /_/Dapper/SqlMapper.cs:line 1094
   στο System.Collections.Generic.List'1..ctor(IEnumerable'1 συλλογή)
   στο System.Linq.Enumerable.ToList[TSource](IEnumerable'1 πηγή)
   στο Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable'1 commandTimeout, Nullable'1 commandType) στο /_/ Dapper/SqlMapper.cs:γραμμή 734
   στο SqlKata.Execution.QueryFactory.Get[T](Ερώτημα ερωτήματος, συναλλαγή IDbTransaction, χρονικό όριο Nullable'1)
   at SqlKata.Execution.QueryExtensions.Get[T](Query query, IDbTransaction transaction, Nullable'1 timeout)
   at SqlKata.Execution.QueryExtensions.Get(Query query, IDbTransaction transaction, Nullable'1 timeout)
   στο SqlKataDemo.Program.Main(String[] args) στο C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\SqlKataDemo\Program.cs:line 20
ClientConnectionId:49158892-5a24-4aa8-8249-232fba2674da
Αριθμός σφάλματος:208,Κατάσταση:1,Κατηγορία:16


Εάν θέλουμε απλώς να δημιουργήσουμε εντολές sql μέσω του SqlKata και δεν θέλουμε να τις εκτελέσουμε, ο κώδικας έχει ως εξής:



Πιο σύνθετα ερωτήματα

Πίνακας JOIN


Εισαγωγή δεδομένων


Ενημέρωση δεδομένων


Διαγραφή δεδομένων

(Τέλος)





Προηγούμενος:Οι ετικέτες των μονάδων μνήμης Hynix (Hynix) και Micron (Micron) εξηγούνται λεπτομερώς
Επόμενος:Το ESXI 7 ελέγχει το μοντέλο μνήμης και το μέγεθος του κεντρικού υπολογιστή διακομιστή
Δημοσιεύτηκε στις 2022-10-13 15:19:47 |
Μαθαίνω να μαθαίνω, καλό πράγμα
Δημοσιεύτηκε στις 2022-10-14 11:07:18 |
Μαθαίνω να μαθαίνω
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 2025-1-2 12:15:02 |
Το LINQKit είναι μια δωρεάν σουίτα επεκτάσεων για προχωρημένους χρήστες LINQ σε SQL και Entity Framework. :Η σύνδεση με υπερσύνδεσμο είναι ορατή.
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 2025-1-2 14:20:57 |
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com