Как вызвать хранимую процедуру с помощью Dapper в C#
3 марта 2023 г.Dapper – это популярный и простой в использовании инструмент объектно-реляционного сопоставления (ORM) для разработчиков .NET. Он легкий, быстрый и предоставляет простой способ выполнения SQL-запросов и сопоставления результатов со строго типизированными объектами.
В этой статье обсуждается, как вызвать хранимую процедуру с помощью Dapper в C#. Мы рассмотрим следующие темы: (Справочник)
- Что такое хранимая процедура?
- Как создать хранимую процедуру в SQL Server
- Как вызвать хранимую процедуру с помощью 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);
}
Давайте разберем этот код шаг за шагом:
- Начнем с создания подключения к базе данных с помощью класса
SqlConnection
. Мы передаем строку подключения, в которой указаны имя сервера, имя базы данных и метод проверки подлинности. - Далее мы определяем переменную, представляющую входной параметр хранимой процедуры.
- Внутри блока
using
мы создаем анонимный объект, содержащий входные параметры хранимой процедуры. В этом случае у нас есть только один параметр с именемCustomerID
, которому мы присваиваем значениеcustomerID
. - Затем мы вызываем метод
Query
для объекта подключения, передавая имя хранимой процедуры ("GetCustomerByID"), объектparameters
и тип команды. (CommandType.StoredProcedure
). - Наконец, мы сохраняем результат запроса в переменной с именем
result
. В этом примере предполагается, что классCustomer
имеет свойства, соответствующие столбцам в таблицеCustomers
.
Использование Dapper для вызова хранимых процедур может стать мощным инструментом при работе с базами данных. Вот несколько советов, о которых следует помнить при использовании Dapper для вызова хранимых процедур:
- Используйте параметры для предотвращения атак путем внедрения кода SQL. Всегда используйте параметры при передаче данных в хранимую процедуру, чтобы избежать атак путем внедрения кода SQL. Dapper упрощает эту задачу, позволяя передавать анонимный объект, содержащий значения параметров.
- Сопоставление результатов со строго типизированными объектами: Dapper упрощает сопоставление результатов хранимой процедуры со строго типизированными объектами, что может сделать ваш код чище и удобнее в сопровождении. Вы можете сделать это, передав тип объекта, который вы хотите сопоставить, в качестве общего параметра методу
Query
. - Используйте транзакции для обеспечения согласованности данных. Если вам нужно выполнить несколько запросов в рамках одной операции, вы должны использовать транзакцию, чтобы обеспечить согласованность данных. Dapper поддерживает транзакции через интерфейс
IDbTransaction
. - Учитывайте влияние на производительность. Хотя Dapper обычно работает очень быстро, вызов хранимой процедуры может быть медленнее, чем выполнение необработанного SQL-запроса, из-за накладных расходов на вызов хранимой процедуры. Если вас беспокоит производительность, рассмотрите возможность использования простого SQL-запроса.
В заключение, вызов хранимой процедуры с помощью Dapper в C# — это простой процесс, который может помочь вам написать чистый и эффективный код базы данных. Следуя приведенным выше советам, убедитесь, что ваш код безопасен, удобен в сопровождении и хорошо работает.
Подпишитесь на меня
Публикация C#, LinkedIn, Instagram, Twitter, Dev. в, Pinterest, Подстек, Hashnode, Write.as< /а>
Справочные документы
https://www.learndapper.com/stored-procedures?embedable=true р>
Оригинал