Как вызвать хранимую процедуру с помощью Dapper в C#

Как вызвать хранимую процедуру с помощью Dapper в C#

3 марта 2023 г.

Dapper – это популярный и простой в использовании инструмент объектно-реляционного сопоставления (ORM) для разработчиков .NET. Он легкий, быстрый и предоставляет простой способ выполнения SQL-запросов и сопоставления результатов со строго типизированными объектами.

В этой статье обсуждается, как вызвать хранимую процедуру с помощью Dapper в C#. Мы рассмотрим следующие темы: (Справочник)

  1. Что такое хранимая процедура?
  2. Как создать хранимую процедуру в SQL Server
  3. Как вызвать хранимую процедуру с помощью Dapper в C#

Что такое хранимая процедура?

Хранимая процедура представляет собой предварительно скомпилированный набор сохраненных операторов SQL в базе данных. Хранимые процедуры могут инкапсулировать сложную бизнес-логику, повышать производительность и обеспечивать безопасность.

Хранимые процедуры могут принимать параметры и возвращать результаты, как обычный запрос SQL. Кроме того, хранимые процедуры могут выполнять другие действия, такие как изменение данных, отправка электронных писем или выполнение других хранимых процедур.

Как создать хранимую процедуру в SQL Server

Прежде чем мы сможем вызвать хранимую процедуру с помощью Dapper, мы должны создать хранимую процедуру в SQL Server. Вот пример простой хранимой процедуры, которая принимает параметр и возвращает результат:

CREATE PROCEDURE GetCustomerByID
    @CustomerID INT
AS
BEGIN
    SELECT * FROM Customers WHERE CustomerID = @CustomerID
END

Эта хранимая процедура принимает целочисленный параметр с именем CustomerID и возвращает все столбцы из таблицы Customers, где CustomerID соответствует входному параметру.

Как вызвать хранимую процедуру с помощью Dapper в C

Теперь, когда мы создали хранимую процедуру в SQL Server, мы можем вызывать ее с помощью Dapper в C#. Вот пример того, как это сделать:

using Dapper;
using System.Data.SqlClient;

string connectionString = "Data Source=SERVERNAME;Initial Catalog=DATABASENAME;Integrated Security=True;";
int customerID = 1;

using (SqlConnection connection = new SqlConnection(connectionString))
{
    var parameters = new { CustomerID = customerID };
    var result = connection.Query<Customer>("GetCustomerByID", parameters, commandType: System.Data.CommandType.StoredProcedure);
}

Давайте разберем этот код шаг за шагом:

  1. Начнем с создания подключения к базе данных с помощью класса SqlConnection. Мы передаем строку подключения, в которой указаны имя сервера, имя базы данных и метод проверки подлинности.
  2. Далее мы определяем переменную, представляющую входной параметр хранимой процедуры.
  3. Внутри блока using мы создаем анонимный объект, содержащий входные параметры хранимой процедуры. В этом случае у нас есть только один параметр с именем CustomerID, которому мы присваиваем значение customerID.
  4. Затем мы вызываем метод Query для объекта подключения, передавая имя хранимой процедуры ("GetCustomerByID"), объект parameters и тип команды. (CommandType.StoredProcedure).
  5. Наконец, мы сохраняем результат запроса в переменной с именем result. В этом примере предполагается, что класс Customer имеет свойства, соответствующие столбцам в таблице Customers.

Использование Dapper для вызова хранимых процедур может стать мощным инструментом при работе с базами данных. Вот несколько советов, о которых следует помнить при использовании Dapper для вызова хранимых процедур:

  1. Используйте параметры для предотвращения атак путем внедрения кода SQL. Всегда используйте параметры при передаче данных в хранимую процедуру, чтобы избежать атак путем внедрения кода SQL. Dapper упрощает эту задачу, позволяя передавать анонимный объект, содержащий значения параметров.
  2. Сопоставление результатов со строго типизированными объектами: Dapper упрощает сопоставление результатов хранимой процедуры со строго типизированными объектами, что может сделать ваш код чище и удобнее в сопровождении. Вы можете сделать это, передав тип объекта, который вы хотите сопоставить, в качестве общего параметра методу Query.
  3. Используйте транзакции для обеспечения согласованности данных. Если вам нужно выполнить несколько запросов в рамках одной операции, вы должны использовать транзакцию, чтобы обеспечить согласованность данных. Dapper поддерживает транзакции через интерфейс IDbTransaction.
  4. Учитывайте влияние на производительность. Хотя Dapper обычно работает очень быстро, вызов хранимой процедуры может быть медленнее, чем выполнение необработанного SQL-запроса, из-за накладных расходов на вызов хранимой процедуры. Если вас беспокоит производительность, рассмотрите возможность использования простого SQL-запроса.

В заключение, вызов хранимой процедуры с помощью Dapper в C# — это простой процесс, который может помочь вам написать чистый и эффективный код базы данных. Следуя приведенным выше советам, убедитесь, что ваш код безопасен, удобен в сопровождении и хорошо работает.

Подпишитесь на меня

Публикация C#, LinkedIn, Instagram, Twitter, Dev. в, Pinterest, Подстек, Hashnode, Write.as< /а>

Справочные документы

https://www.learndapper.com/stored-procedures?embedable=true


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE