我有一个重 CRUD 的 ASP.NET 应用程序,其中包含存储过程中的所有业务逻辑。
例如,有一个大约 500 行长的 UPDATE 存储过程,包含大量条件逻辑,引用多个表和 UDF。proc 接收正在更新的字段名称和新值,设置一堆声明的变量,进行一堆验证并创建一个动态 SQL 语句来进行更新。一旦尺寸适合所有。它很大而且很混乱。
我想将业务逻辑转移到 .NET 端,以便更轻松地管理/更新、测试和置于源代码控制之下。
我的问题是:这个业务逻辑应该去哪里?
假设我有一个带有名为“Factory”的属性的 PurchaseOrder 对象。如果工厂发生变化,我需要确保分配的新工厂生产采购订单上的产品,它有定价,并且根据该工厂要求的最低数量等。所有这些验证都需要在数据库。
我是否应该让 PurchaseOrder 对象的工厂设置器负责通过“isFactoryValid”方法/属性进行数据验证,该方法/属性对通用数据访问对象进行多次调用,然后进行更新(如果是)?
或者我是否创建一个负责处理与 PurchaseOrder 相关的数据访问的 PurchaseOrder/Database '代理'对象。在这种情况下,我是否会在由 PurchaseOrder 的设置器调用的代理中拥有一个“isFactoryValid”方法,然后调用代理的更新方法?
我如何确定是否需要担心所有这些额外调用会增加数据库的流量?