2011-05-23 63 views
0

我需要使用'DropCreateDatabaseIfModelChanges' - 初始化類,因爲我想創建一個特殊的實體(表),如果它不存在。我的問題是,我的DbContext中還有另一個實體,它不應該是模型兼容性檢查的一部分。實體框架4.1禁用模型兼容性檢查

我收到以下錯誤信息:

Model compatibility cannot be checked because the EdmMetadata type was not inclu 
ded in the model. Ensure that IncludeMetadataConvention has been added to the Db 
ModelBuilder conventions. 

是否有可能排除從該檢查一個特殊的實體?

編輯: 我已經完成了Devart的建議。這個問題似乎不同於我第一次嘗試。如果我讓EF用我的CheckedContext創建一個新的數據庫,這一切都可以正常工作。但我發現了上述錯誤信息,當我嘗試使用我的NonCheckedContext至極應該利用現有的表...

EDIT2: This是一個可行的解決方案。一切正常,當數據庫不存在之前。但是,對我來說,放棄/創建數據庫是不行的。

回答

1

一個可能的解決方案:創建一個從DbContext繼承的上下文類,然後創建兩個單獨的從上下文繼承的子上下文 - CheckedContext和NonCheckedContext,並相應地設置數據庫初始化策略。
請注意,您應該首先訪問CheckedContext,以便啓動它的所有檢查。

+0

這是行不通的。我無法創建一個從DbContext派生的包裝類,而不包含任何DbSet <>。這樣做會導致執行基類(DbContext)的構造函數時發生異常。我可以創建兩個獨立的DbContext類,但這不可能是解決方案。 – 0xbadf00d 2011-05-23 09:42:39

+0

我很抱歉,那不是問題所在。我已更新了我的初始帖子。 – 0xbadf00d 2011-05-23 10:05:52