Repository + UnitOfWork模式中的UpdateOrAdd方法

时间:2011-11-14 09:49:05

标签: entity-framework repository repository-pattern

在Repository模式中添加UpdateOrAdd方法或者使用参数'AddIfNoExists'添加UpdateMethod是否可以接受?

我想添加这样的方法来简化od DataServices的使用。

例如:客户端代码在网格中显示数据。然后客户端将所有数据发送到存储库的UpdateMethod。然后,存储库会计算出添加了哪些数据以及修改了哪些数据。

2 个答案:

答案 0 :(得分:2)

完全取决于您的存储库的公共接口如何。如果你想要插入和更新的单一方法,你当然可以公开它,但你必须正确处理方法实现中的行为 - EF不会帮助你,因为它需要单独调用插入和更新。

答案 1 :(得分:0)

我总是在存储库中创建一个名为Add的方法,它将添加新对象(如果它是新的)并将更新该对象(如果它已存在但保存或更新它不属于存储库,因为存储库不跟踪状态和哪一个新的或之前存在的,这属于工作单元,这就是为什么工作单元模式告诉你应该跟踪你改变了什么;否则,该数据将不会被写回数据库 因此,您需要在工作单元中添加此方法,具体取决于您的ORM或DAL方法 所以工作单元将跟踪

  • 新对象
  • 脏物品
  • 删除对象

最后你会

  • 提交(保存) - >添加新内容并更新现有内容或
  • 还原