2013-12-11 12 views
0

我在我的web应用程序中使用ASP.NET MVC5,实体框架。预计复杂的业务逻辑,因此需要基于个人业务关注实现代码分离。我正在使用Code First和现有的数据库方法。我在设计向导中创建了3个ADO.NET实体数据模型。因此将dbContext与其模型分开。当我创建第三个dbContext时,我的问题就出现了,它有一个表格共享来自我最初创建的模型之一。错误是Metadata Exception被用户代码解除。我相信是与元数据有关,但不知道如何解决这个问题?如果一个网页(一个业务函数)只有两个表,为什么要在内存中加载整个数据加上解耦将提高可维护性和灵活性,以扩展应用程序而不会干扰现有代码!使用多个dbcontext为每个业务功能

回答

1

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

  • 忽略实体

    modelBuilder.Ignore<MyUnNecessaryEntity>();

和/或

  • 更改数据库初始化上的MINI上下文没有

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

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

有一篇很好的文章值得从Julie Lerman在MSDN上讨论有界上下文的主题。