У меня CRUD-тяжелое приложение ASP.NET со всей бизнес-логикой в хранимых процедурах.
Например, есть хранимая процедура UPDATE длиной ~ 500 строк, которая содержит большое количество условной логики, ссылающейся на несколько таблиц и пользовательских функций. Proc принимает обновленное имя поля и новое значение, устанавливает набор объявленных переменных, выполняет проверку и создает динамический оператор SQL для выполнения обновления. Как только размер подходит всем. Это большой и запутанный.
Я бы хотел перенести бизнес-логику на сторону .NET, чтобы упростить управление / обновление, тестирование и управление исходным кодом.
У меня такой вопрос: куда должна идти эта бизнес-логика?
Допустим, у меня есть объект PurchaseOrder со свойством с именем 'Factory'. Если Фабрика изменяется, мне нужно убедиться, что назначенный новый завод делает продукт, который находится в Закупочном заказе, что у него есть ценообразование, и что минимальное количество запрашивается на основе этой фабрики и т. Д. Все эти проверки требуют запросов в базы данных.
Должен ли я, чтобы установщик Factory объекта PurchaseOrder отвечал за проверку данных через метод / свойство isFactoryValid, которое выполняет множественные вызовы универсального объекта доступа к данным, а затем выполняет обновление, если оно есть?
Или я создаю объект-посредник PurchaseOrder / Database, который отвечает за обработку только доступа к данным, связанным с PurchaseOrder. В этом случае у меня будет метод isFactoryValid в прокси, который вызывается установщиком PurchaseOrder, а затем вызывается метод обновления прокси?
Как определить, нужно ли мне беспокоиться об увеличении трафика в базе данных со всеми этими дополнительными вызовами?