2013-12-11 24 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上討論有界上下文的主題。