为每个业务功能使用多个dbcontext

时间:2013-12-11 11:07:30

标签: asp.net-mvc entity-framework

我在我的Web应用程序中使用ASP.NET MVC5实体框架。期望复杂的业务逻辑,因此需要基于单个业务关注实现代码分离。我正在使用Code First和现有的数据库方法。我在设计向导中创建了3个ADO.NET实体数据模型。所以将dbContext与其模型分开。当我创建第三个dbContext时,我的问题出现了,它有一个表共享来自我最初创建的模型之一。错误是元数据异常被用户代码取消处理。我认为与Meta数据有关,但不确定如何解决这个问题?

我想要实现的目标,如果一个网页(一个业务功能)只有两个表,为什么在内存中加载整个数据加解耦将提高可维护性和灵活性,以扩展应用程序而不会干扰现有代码!

1 个答案:

答案 0 :(得分:1)

使用有界上下文的关键是使用

  • 忽略实体

    modelBuilder.Ignore<MyUnNecessaryEntity>();

和/或

  • 将MINI上下文中的DataBAse初始值设定项更改为无

    Database.SetInitializer(new ContextInitializerNone<MyContext>());
    

我喜欢只有1个上下文负责保持一组表一致的想法。 其他上下文可以使用相同的POCO定义访问这些表。它们可以是pocs的一个子集。上下文减少了或者没有初始化程序。

有一篇很好的文章值得在MSDN上关于有界上下文的Julie Lerman阅读。