EF 6 加上多个数据库上下文

3

看到像这样的问题,我倾向于不使用多个dbcontexts。然而,查看一些示例代码仍然是很好的。是否有人知道一个使用多个dbcontexts和工作单元(可能还包括asp.net mvc)的企业级开源实现(c#)?


除了链接问题中的信息之外,在EF6中,您可以使用多个DbContext进行迁移,并将它们放在一个项目中。 运行迁移时,您需要指定您要谈论哪个上下文。 - trailmax
@trailmax - 我知道,谢谢。 - cs0815
1个回答

5
由于您使用了“企业”这个词,我会向Julie Lerman推荐一些关于DDD有界上下文的多个DbContext的好文章。
以下是她最近在MSDN上发表的关于此主题的文章:http://msdn.microsoft.com/en-us/magazine/jj883952.aspx
她还拥有Pluralsight上一系列出色的视频教程,其中涉及企业级Entity Framework的使用,包括使用多个上下文。由于这是一个付费服务,我不会包含任何链接。
从样例代码的角度来看,可以参考Microsoft Patterns & Practices中的参考CQRS架构,该架构使用有界上下文(作为多个DbContext)将复杂系统分解为单独的域。 http://msdn.microsoft.com/en-us/library/jj554200.aspx 参考CQRS架构的代码在这里:https://github.com/mspnp/cqrs-journey-code
希望这些内容对您有所帮助。

1
如果你对实体框架有任何问题,答案应该永远是Julie Lerman。 - krillgar
我感谢阅读了她书的部分内容。我知道她关于DbContext和Bounded Context的博客。我在这里提到了这个问题:http://stackoverflow.com/questions/23949971/ef-context-database-schema-ddd-boundedcontext 然而,一些DDD原教旨主义者认为还存在一些差异(请参见上述SO帖子中的评论)。无论如何,我看不出Julie如何实现工作单元模式(也跨越DbContexts/Bounded Contexts)。 - cs0815
感谢您提供问题链接 - 您在这个领域提出了一些非常有趣的问题。期待稍后喝杯茶,仔细阅读它们。 - Matt Caton
EF中的工作单元已经在内部实现,无需为DbContext创建多余的包装器。如果您正在谈论跨界限上下文的UoW,则这是一个提示,这些实体可能应该留在一个上下文中。 - trailmax
@LongboatHarry - 感谢你的积极态度 - 相比现在大多数 Stack Overflow 用户来说,这真是令人耳目一新的 (-: - cs0815
@trailmax - 很好的观点。这就是DDD社区确定边界的方式(在一个事务中更改的事物)。我知道有些人说dbcontext = uow,repository = dbset。但我仍然认为将dbcontext设置为DDD有界上下文是错误的。 - cs0815

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接