При необходимости в независимости базы данных Вы, вероятно, захотите поместить всю свою бизнес-логику в прикладной уровень, так как стандарты, доступные на уровне приложений, намного более распространены, чем доступные уровню базы данных.
Однако, если независимость базы данных не является фактором № 1 и набором навыков Вашей команды, включает сильные навыки базы данных, то помещение бизнес-логики в базе данных может оказаться лучшим решением. У Вас могут быть свои люди приложения, делающие специализированные вещи и Ваших людей базы данных, удостоверяющихся вся муха запросов.
, Конечно, существует большая разница между способностью бросить SQL-оператор вместе и наличие "сильных навыков базы данных" - если Ваша команда ближе к первому, чем последние тогда помещают логику в приложение с помощью одного из Того, чтобы быть в спящем режиме этого мира (или измените команду!).
, По моему опыту, в Корпоративной среде у Вас будет база данных единой цели, и навыки в этой области - в этом случае помещают все, что Вы можете в базе данных. Если Вы будете в бизнесе продажи программного обеспечения, стоимость лицензии базы данных сделает независимость базы данных самым большим фактором, и Вы будете реализовывать все, что Вы можете на уровне приложений.
Hope, которая помогает.
SqlCommands довольно легковесны. Вы можете безопасно создавать новую каждый раз.
Существуют сложности с параметризованными командами, когда вам нужно очистить и сбросить все параметры, и в этот момент создание новой команды будет понятным, простым для понимания и эффективным.
Кроме того, обычно можно каждый раз использовать новое соединение SqlConnection. Автоматическое встроенное объединение соединений - это «волшебство», которое делает это эффективным.
Я использую это:
public void ExecuteQuery(string query)
{
this.ExecuteQuery(query, null);
}
public void ExecuteQuery(string query, Dictionary<string, object> parameters)
{
using (SqlConnection conn = new SqlConnection(this.connectionString))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = query;
if (parameters != null)
{
foreach (string parameter in parameters.Keys)
{
cmd.Parameters.AddWithValue(parameter, parameters[parameter]);
}
}
cmd.ExecuteNonQuery();
}
}
}