Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 6572|Svar: 4

[.NET Core] [Egentlig kamp]. NET/C# SQL forespørgselsgenerator baseret på sqlkata

[Kopier link]
Opslået den 2022-10-12 22:07:53 | | | |
Krav: Jeg læste en artikel om sqlkata på internettet, "SqlKata - Convenient and Easy to Use Sql Query Builder", og jeg synes, at dette plugin er meget nyttigt, du kan dynamisk sætte tabelnavne og betingelser for at generere tilsvarende sikre SQL-sætninger, og front-end kalder sqlkata for at udføre databaseoperationer via visuel formularkonfiguration, og du kan konfigurere et interface uden programmering og hardcode. Dette ligner min tidligere brug af jOOQ i Java-udviklingsprojekter.

SqlKata

SqlKata Query Generator er en kraftfuld SQL-forespørgselsgenerator skrevet i C#. Den er sikker og ramme-agnostisk. Inspireret af de bedste forespørgselsbyggere på markedet, såsom Laravel Query Builder og Knex.

En kraftfuld dynamisk SQL-forespørgselsgenerator, der understøtter SQL Server, MySql, PostgreSql, Oracle og Firebird.

GitHub-adresse:Hyperlink-login er synlig.
Officiel dokumentadresse:Hyperlink-login er synlig.

SQL Server forbereder testdataene

Først bruger vi MSSQL-databasen til at oprette en ny testtabel og generere nogle testdata, scriptet er som følger:



Opret en ny .NET Core 3.1 konsolapp

Tilføj SqlKata og SqlKata.Execution, Microsoft.Data.SqlClient-pakkerne med Nuget med følgende kommando:


Konsolkoden er som følger:

exec sp_executesql N'SELECT * FRA [TestTableSize] HVOR [MyKeyField] = @p0 ORDEN EFTER (SELECT 0) OFFSET @p1 RÆKKER HENTER NÆSTE @p2 KUN RÆKKER',n'@p0 nvarchar(4000),@p1 bigint,@p2 int',@p0= N'0000000088',@p1=0,@p2=10



Prøv at sende en forespørgselEn tabel, der ikke eksisterer, fejlen er som følger:

Ubehandlet undtagelse. Microsoft.Data.SqlClient.SqlException (0x80131904): Ugyldigt objektnavn 'Hei'.
   at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
   at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException undtagelse, Boolean breakConnection, Action'1 wrapCloseInAction)
   at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   på Microsoft.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   ved Microsoft.Data.SqlClient.SqlDataReader.get_MetaData()
   at Microsoft.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, boolean shouldCacheForAlwaysEncrypted)
   at 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&useCache, Boolean asyncWrite, Boolean inRetry, String method)
   på Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String-metoden)
   på Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
   på Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   på System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   på Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior) i /_/Dapper/SqlMapper.cs:line 1066
   på Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, CommandDefinition-kommando, Type effectiveType)+MoveNext() i /_/Dapper/SqlMapper.cs:line 1094
   på System.Collections.Generic.List'1..ctor(IEnumerable'1 collection)
   på System.Linq.Enumerable.ToList[TSource](IEnumerable'1 kilde)
   at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable'1 commandTimeout, Nullable'1 commandType) i /_/ Elegant/SqlMapper.cs: linje 734
   at SqlKata.Execution.QueryFactory.Get[T](Query query, IDbTransaction-transaktion, Nullable'1 timeout)
   at SqlKata.Execution.QueryExtensions.Get[T](Forespørgsel, IDbTransaction-transaktion, Nullable'1 timeout)
   at SqlKata.Execution.QueryExtensions.Get (Query query, IDbTransaction-transaktion, Nullable'1 timeout)
   på SqlKataDemo.Program.Main(String[] args) i C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\SqlKataDemo\Program.cs:linje 20
ClientConnectionId:49158892-5a24-4aa8-8249-232fba2674da
Fejlnummer: 208, Stat:1, Klasse: 16


Hvis vi bare vil generere SQL-sætninger gennem SqlKata og ikke vil eksekvere dem, er koden som følger:



Mere avancerede forespørgsler

JOIN-tabel


Indsæt data


Opdateringsdata


Slet data

(Slut)





Tidligere:Hynix (Hynix) og Micron (Micron) hukommelsesmoduletiketter forklares i detaljer
Næste:ESXI 7 tjekker hukommelsesmodellen og størrelsen af serverværten
Opslået den 13-10-2022 kl. 15:19:47 |
At lære at lære, godt
Opslået den 14-10-2022 11:07:18 |
Lær at lære
 Udlejer| Opslået den 2-1-2025 12:15:02 |
LINQKit er en gratis suite af udvidelser til avancerede brugere af LINQ til SQL og Entity Framework. :Hyperlink-login er synlig.
 Udlejer| Opslået den 2025-1-2 14:20:57 |
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com