我有一个CRUD沉重的ASP.NET应用程序,其中包含存储过程中的所有业务逻辑。将数据移出数据库时将业务逻辑移动到何处
作为一个例子,有一个UPDATE存储过程约500行,并包含大量的条件逻辑,引用了多个表UDFs & UDF。 proc需要更新字段名称和新值,设置一堆声明的变量,执行一堆验证并创建动态SQL语句来执行更新。一旦适合所有人。这很大,很混乱。
我想将业务逻辑转移到.NET端,以便更容易管理/更新,测试并置于源代码控制之下。
我的问题是这样的:这个商业逻辑应该去哪里?
假设我有一个名为'Factory'的属性的PurchaseOrder对象。如果工厂被更改,我需要确保分配的新工厂生产PurchaseOrder上的产品,具有定价并且基于该工厂要求最低数量等。所有这些验证都需要在数据库。
我应该有PurchaseOrder对象的Factory setter负责通过一个'isFactoryValid'方法/属性来进行数据验证,该方法/属性可以对通用数据访问对象进行多重调用,然后进行更新?
我还是创建一个PurchaseOrder /数据库'代理'对象,负责处理与PurchaseOrder相关的数据访问。在这种情况下,我是否会在代理中有一个'isFactoryValid'方法,由PurchaseOrder的setter调用,然后调用代理的更新方法?
如何确定是否需要担心增加所有这些额外呼叫的数据库流量?
但是请注意:将业务逻辑移出数据库可能会导致数据库调用(“chattiness”)增加 – RobS 2009-04-22 00:59:21