工作单元和多个对象上下文

aja*_*jay 5 entity-framework unit-of-work repository-pattern

我对使用多个对象上下文的工作单元和存储库实现有疑问.我的应用使用3个数据库中的数据.这意味着我有三个对象上下文,每个上下文代表一个数据库.我需要从一个数据库获取数据,但必须通过从其他2个数据库中读取过滤条件来过滤数据.我将这三个对象上下文传递给unitofwork构造函数,以便我可以访问我的存储库中的另外两个对象上下文.我在互联网上搜索了很多,但找不到任何好的答案.如果我做得对,或者是否有处理这种情况的标准方法,请你建议吗?

谢谢,Ajay.

Lad*_*nka 4

将所有三个上下文保留在工作单元中是一种可行的方法,但一旦您需要在单个工作单元/逻辑事务中修改多个数据库中的数据,这种实现的真正含义可能才有意义。除非您需要同时将数据提交到多个上下文,否则您的实现更像是上下文工厂,而不是工作单元。但这只是关于命名您的实现。你的实现意义是好的。

我不同意的是一个存储库正在从其他上下文读取过滤器这一事实。存储库应该只处理它自己的数据/聚合根。这是调用者(业务服务)从其他上下文/存储库获取过滤器并将过滤器传递到获取数据所需的主存储库的责任。

  • 喜欢这个答案。几年后,我想知道您是否可以提供一些有关如何使用 UoW 处理多个 DbContext 的教程?有指导吗? (3认同)