Чтобы уточнить эту тему, у вас есть несколько вариантов.Некоторые из них уже разработаны.Существуют следующие подходы: Add
, AddWithValue
и целый набор параметров.Это обеспечивает гибкость, но вы также упоминаете, чтобы вернуть значение.
Таким образом, чтобы приблизиться к исходному аспекту параметра.
Добавить: Вы определяете параметр, тип в SQL и значение.Это облегчает потенциальные проблемы с базой данных.Вы передаете значение, которое является целым числом, но SQL считает, что оно должно быть десятичным, как определено.
AddWithValue: SQL автоматически выведет тип, просто передаст значение и параметр.
Сбор параметров: Вы заранее определяете все свои параметры, а затем просто переходите к своему SqlCommand
.
Примером метода будет:
открытый класс DatabaseContext: IDbRepository {приватная строка только для чтения dbConnection;
public DatabaseContext(IConfiguration configuration) => dbConnection = configuration.GetConnectionString("dbConnection");
public bool Insert(string query, params SqlParameter[] parameters)
{
// If no parameters, then you really are not inserting. Handle exception.
using(var connection = new SqlConnection(dbConnection))
using(var command = new SqlCommand(connection, query))
{
connection.Open();
command.Parameters.AddRange(parameters);
return (command.ExecuteNonQuery() > 0);
}
}
Так что по сути вы бы вызваливаш контекст, передать запрос, параметры, а затем выполнить ваш запрос.Но он возвращает логическое значение, а не условную проверку для определения успеха или неудачи.Когда вы звоните, вы знаете, что это удалось, поэтому вы могли бы вернуть действительный код состояния, т. Е. HttpStatusCode.Ok
.
Но вы также можете обернуться на фабрике или немного очистить подход при взаимодействии.Надеюсь, это поможет.