ЕСЛИ ваша база данных будет поддерживать только одно приложение, а ЕСЛИ вы никогда не ожидаете, что одни и те же данные будут по-разному использоватьсяв зависимости от того, кто его использует, и IF вы никогда не планируете использовать другой механизм хранения ... тогда обязательно поместите бизнес-логику в базу данных.
Однако, если что-то из этого является правдой (как я подозреваю).Тогда я, и, вероятно, большинство людей на этом сайте, настоятельно рекомендую вам не идти по этому пути.
Помещение логики в БД может быть соблазнительным, поскольку вы думаете: «Я могу изменить это на лету!»но это дорога для техобслуживания, по которой вы не хотите идти.Слушайте голос опыта и держите свои проблемы отдельно.
Мое приложение.это отдельное приложение для WindowsЭто решение для инвентаризации и выставления счетов.В настоящее время я написал классы, содержащие методы для выполнения различных операций с БД, таких как вставка, обновление и удаление.Интересно, если бы я мог писать хранимые процедуры в самой БД и передавать параметры только через интерфейс .NET, какое это может дать преимущество?
Это на самом деле не похоже на бизнес-логику для менявообще, если конечно вы не делаете что-то большее, чем просто операции CRUD.В этом случае то, используете ли вы хранимые процедуры, ORM или сгенерированные вручную запросы в коде, является подробностью реализации.
Уровень доступа к данным должен заботиться о подключении к механизму хранения данных, но остальноевашего приложения не должно заботиться.Я проиллюстрирую это на примере:
public class MyDomainObject
{
public String Name {get; set;}
public Boolean IsValid()
{
return !String.IsNullOrWhitespace(Name) &&
DoesNotContainInvalidCharacters(Name);
}
}
public class MyDataAccess
{
public List<MyDomainObject> GetAll()
{
//Some data access logic here
}
public MyDomainObject GetByName(String name)
{
//Some data access logic here
}
public void Save(MyDomainObject)
{
if(MyDomainObject.IsValid)
{
//Some data access logic here
}
}
}
Итак, теперь у вас есть объект домена и объект доступа к данным .Объект домена применяет некоторую тривиальную бизнес-логику, которую можно проверить с помощью свойства IsValid, и уровень доступа к данным использует его, чтобы определить, следует ли сохранить его или нет.Однако подробности о том, как хранятся данные, не имеют большого значения для уровня домена / бизнеса.
Если вы хотите провести рефакторинг для использования хранимых процедур, ваше приложение на самом деле не должно волноваться.