Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 6572|Odpověď: 4

[.NET Core] [Skutečný boj]. Generátor dotazů NET/C# založený na sqlkata

[Kopírovat odkaz]
Zveřejněno 12. 10. 2022 22:07:53 | | | |
Požadavky: Četl jsem článek o sqlkata na internetu, "SqlKata - Convenient and Easy to Use Sql Query Builder" a myslím, že tento plugin je velmi užitečný, můžete dynamicky nastavovat názvy tabulek a podmínky pro generování odpovídajících bezpečných SQL příkazů a front-end volá sqlkata pro provádění databázových operací prostřednictvím vizuálních konfiguračních informací a můžete nastavit rozhraní bez programování a hardcodingu. To je podobné mému předchozímu použití jOOQ v Java vývojových projektech.

SqlKata

SqlKata Query Generator je výkonný generátor dotazů pro SQL napsaný v C#. Je bezpečný a nezávislý na rámu. Inspirováno nejlepšími query buildery, jako jsou Laravel Query Builder a Knex.

Výkonný dynamický generátor SQL dotazů, který podporuje Sql Server, MySql, PostgreSql, Oracle a Firebird.

Adresa GitHubu:Přihlášení k hypertextovému odkazu je viditelné.
Oficiální adresa dokumentu:Přihlášení k hypertextovému odkazu je viditelné.

SQL Server připravuje testovací data

Nejprve použijeme databázi MSSQL k vytvoření nové testovací tabulky a vygenerování testovacích dat, skript je následující:



Vytvořte novou konzolovou aplikaci .NET Core 3.1

Přidejte balíčky SqlKata a SqlKata.Execution, Microsoft.Data.SqlClient pomocí Nugetu pomocí následujícího příkazu:


Kód konzole je následující:

exec sp_executesql N'SELECT * FROM [TestTableSize] KDE [MyKeyField] = @p0 POŘADÍ PODLE (SELECT 0) OFFSET @p1 ŘÁDKY NAČÍTÁ NEXT @p2 ŘÁDKY POUZE ',N'@p0 nvarchar(4000),@p1 bigint,@p2 int',@p0= N'0000000088',@p1=0,@p2=10



Zkuste oslovit jeden dotazTabulka, která neexistuje, chyba je následující:

Neřešená výjimka. Microsoft.Data.SqlClient.SqlException (0x80131904): Neplatné jméno objektu '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)
   at Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at Microsoft.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   at Microsoft.Data.SqlClient.SqlDataReader.get_MetaData()
   at Microsoft.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, 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& usedCache, Boolean asyncWrite, Boolean inRetry, String method)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
   na Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   na System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(Chování příkazu)
   na Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior) v /_/Dapper/SqlMapper.cs:line 1066
   at Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, příkaz CommandDefinition, Type effectiveType)+MoveNext() in /_/Dapper/SqlMapper.cs:line 1094
   at System.Collections.Generic.List'1..ctor(IEnumerable'1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable'1 source)
   at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable'1 commandTimeout, Nullable'1 commandType) v /_/ Dapper/SqlMapper.cs:linka 734
   at SqlKata.Execution.QueryFactory.Get[T](Query query, IDbTransaction transaction, Nullable'1 timeout)
   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)
   at SqlKataDemo.Program.Main(String[] args) in C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\SqlKataDemo\Program.cs:line 20
ClientConnectionId:49158892-5a24-4aa8-8249-232fba2674da
Chybové číslo:208,Stát:1,Třída:16


Pokud chceme pouze generovat SQL příkazy přes SqlKata a nechceme je vykonávat, kód je následující:



Pokročilejší dotazy

JOIN tabulka


Vložit data


Aktualizace dat


Smazat data

(Konec)





Předchozí:Popisky paměťových modulů Hynix (Hynix) a Micron (Micron) jsou podrobně vysvětleny
Další:ESXI 7 kontroluje paměťový model a velikost serverového hostitele
Zveřejněno 13. 10. 2022 15:19:47 |
Učím se učit, to je dobrá věc
Zveřejněno 14. 10. 2022 11:07:18 |
Učte se učit
 Pronajímatel| Zveřejněno 2025-1-2 12:15:02 |
LINQKit je bezplatná sada rozšíření pro pokročilé uživatele LINQ to SQL a Entity Framework. :Přihlášení k hypertextovému odkazu je viditelné.
 Pronajímatel| Zveřejněno 2025-1-2 14:20:57 |
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com