Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 6572|Ответ: 4

[.NET Core] [Настоящий бой]. NET/C# SQL-генератор запросов на основе sqlkata

[Скопировать ссылку]
Опубликовано 2022-10-12 22:07:53 | | | |
Требования: Я прочитал статью о sqlkata в интернете «SqlKata — удобный и простой в использовании конструктор SQL запросов», и считаю, что этот плагин очень полезен: можно динамически настраивать имена таблиц и условия для генерации соответствующих защищённых SQL-операторов, а фронтенд вызывает 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 ORDER BY (SELECT 0) СМЕЩЕНИЕ @p1 СТРОКИ ВЫБИРАЮТ СЛЕДУЮЩИЕ @p2 СТРОКИ ТОЛЬКО ',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)
   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()
   в Microsoft.Data.SqlClient.SqlDataReader.get_MetaData()
   at Microsoft.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, булева должна кэшироватьForAlwaysEncrypted)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, булев returnStream, булев isAsync, тайм-аут Int32, Task&task, булевый asyncWrite, булев inRetry, SqlDataReader ds, булевый describeParameterEncryptionRequest)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, булевый возвратПоток, завершение TaskCompletionSource'1, Int32 timeout, Task&task, Boolean&usedCache, булевый asyncWrite, булев inRetry, метод строки)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, булев returnStream, String method)
   на Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(поведение CommandBehavior)
   на System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(поведение CommandBehavior)
   на Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior) в /_/Dapper/SqlMapper.cs:line 1066
   at Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, команда CommandDefinition, Type effectiveType)+MoveNext() в /_/Dapper/SqlMapper.cs:строка 1094
   на System.Collections.Generric.List'1..ctor(коллекция IEnumerable'1)
   на System.Linq.Enumerable.ToList[TSource](источник IEnumerable'1)
   at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable'1 commandTimeout, Nullable'1 commandType) в /_/ Dapper/SqlMapper.cs:строка 734
   at SqlKata.Execution.QueryFactory.Get[T](запрос запроса, транзакция IDbTransaction, тайм-аут Nullable'1)
   at SqlKata.Execution.QueryExtensions.Get[T](запрос к запросу, транзакция IDbTransaction, тайм-аут Nullable'1)
   at SqlKata.Execution.QueryExtensions.Get (Запрос к запросу, транзакция IDbTransaction, тайм-аут Nullable'1)
   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
Номер ошибки: 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 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com