我目前正在我的MVC 3应用程序中实现repository。我正在实现的所有以某种方式更改数据的存储库方法(主要是Add *和Delete *)当前不要调用SaveChanges方法。我明确要求我的存储库的用户执行此操作。
另一种选择当然是我总是在我的变异方法中调用SaveChanges。
这里最好的做法是什么?为什么?我一直这样做已经足够长,以至于我已经习惯了它,但我很好奇是否有理由第二种会更好?
答案 0 :(得分:1)
通常,从业务或用例角度来看,工作单元涉及对许多数据实体的修改。
如果在提交时出现问题,您确实希望将所有修改存储在事务中,或者不存储任何修改。
因此,最好在工作单元结束时调用SaveChanges一次,而不是在Add,Update和Delete方法中调用。
答案 1 :(得分:0)
我认为有充分的理由这样做。但是,如果您的变异方法不会持续更改数据库,则必须告知它。我要做的是提供允许调用者指定的重载。此外,提供重载使得通过intellisense(如果我们可以假设每个人的IDE在2012年具有该功能)非常清楚,每个方法都存在重载。否则,您将依赖于存储库的用户来阅读您的文档(并且没有人再这样做了,对吧?)。