0

我刚刚在Enterprise EF上观看了Julie Lerman的视频。我特别喜欢自定义数据上下文的概念,因为它可以让我更细化地控制各个UI。Re:UnitOfWork - 上下文可以分离吗?

Julie在她所有的仓库中都有CRUD方法,这只是对我喜欢的编码太多而已。我打算创建一个其他存储库派生自的通用存储库。我不喜欢她的UOW。

我打算用这种方法来UOW,因为它涉及到存储库:

https://codereview.stackexchange.com/questions/14226/generic-repository-and-unit-of-work-code

含自定义数据上下文的相对条件对象:

  1. 假设我创建:

    i。 CustomerLookup类只具有完整Customer类的部分属性。

  2. ,我也创建

    我。 CustomerLookup db上下文

    ii。 OrdersLookup数据库上下文具有完整的Orders类,但忽略配置中的关联实体Shipping。

如果我按照UOW例如,在上面的链接,该UOW使用FULL的DbContext保存更改。

问题:

  1. 是否有可能以实例化UOW,当在API控制器例如,使得可以使用一个特定的数据上下文:

    我。 CustomerLookupContext与UOW.CustomerLookupRepository.Update(customerLookup)?

    ii。 OrdersLookupContext与UOW.OrdersLookupRepository.Update(order)?

如果我不能解耦UOW上下文对象:

  1. 将我更新部分类像上面的问题;或
  2. 是否使用整个DbContext影响性能;或者,
  3. 我不知道我在说什么&只是使用UOW的完整DbContext?

感谢

+0

我很困惑你的意思是“使用整个DbContext”和“FULL DbContext保存更改”。 DbContext是一个DbContext,不存在部分类型的东西(有部分类,但这些只是编译单元,它们都被编译成一个类)。 –

回答

1

你只应该永远在一个应用程序一个的DbContext。有一些例外情况,例如当您需要访问两个不同的数据库时,但即使如此,我仍然倾向于使用SQL Server Synonyms将它们映射到单个数据库中。

在应用程序中放置多个上下文存在非常实际的问题。你会得到很多编译器错误,并且必须处理命名空间冲突。有可能解决它,但这是一个很大的痛苦。

针对不同的用途制作不同的上下文没有任何好处。 dbcontext的全部要点是您可以完全访问数据库,在不同实体中进行更改,然后将所有更改保存在一个操作中。

你认为你正在获得什么?这不像它将整个数据库加载到内存中。

相关问题