对于一个干净的数据模型,我来回在这...实体框架最佳实践:什么层应调用SaveChanges()?
使用审批工作流程作为一个例子,让我们在我的web应用程序说我有一个页面,让用户标记一个MyEntityObject
为批准。 MyEntityObject
有一些属性可以控制其审批工作流程,所以我有一个常见的实用方法,名为FlagForApproval(MyEntityObject eo)
。
如若页面呼叫FlagForApproval()只设置必要的属性,然后调用的SaveChanges (),当它准备好了,还是应该FlagForApproval()保存更改?
使用实用方法保存更改看起来好像比要求做的要多一点(如果它只是一系列操作中的一步?),但同时使页面调用SaveChanges( )并将数据提交给数据库似乎可能被认为太接近数据层责任。
想法?
(更新:FWIW,到目前为止,我一直有实用方法调用的SaveChanges(),这样的页面只有一组异常处理,是否验证或数据。)
我认为你是100%正确的 - 这是非常干净,以保持在调用SaveChanges BLL,让它决定是否执行保存或不。但我可以看到至少有两种情况,哪里可以发生异常: 1)该项目需要在模型方面进行验证 - 它不是BLL,而是必须确定是否应该保存更改。 2)SaveChanges是在真正简单的代码(添加实体,更新现有实体的单个属性)后执行的。在我的情况下,它将是DAL。 所以我想最好的解决方案是遵循你的直觉和/或经验。 – 2010-01-16 17:01:58