2011-05-09 47 views
2

我有一個現有的數據庫,並且首先使用EF 4.1代碼將我的POCO對象映射到表中。但我得到這個錯誤:EF 4.1先用現有數據庫代碼

EF 4.1 Error Model compatibility cannot be checked because the EdmMetadata type

Eventhough我已經加入了OnModelCreating方法它仍然給了我同樣的錯誤:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{  
    modelBuilder.Conventions.Remove<IncludeMetadataConvention>(); 
} 

我的POCO和數據庫表是完全相同的。

回答

2

看起來問題是數據庫存在,但您正在嘗試使用EF CodeFirst創建它。如果刪除數據庫,這很可能會運行,它將創建數據庫和表。這裏是到了這個問題的人的鏈接,這是他們如何解決它:

http://forums.asp.net/t/1673379.aspx/1?Unable+to+generate+Edm+Metadata+table+at+runtime+from+EF+code+first+model

如果你想使用現有的數據庫(如果你曾在它的其他數據),我想你需要修改Code First的期望。下面是一個關於如何做到這一點SO文章:

Entity Framework CTP 4 - Code First Custom Database Initializer

請務必閱讀所有的職位,因爲即使不接受作爲答案的人有事情可以做一些偉大的信息。

+0

感謝BiggsTRC,刪除數據庫似乎工作。我使用EF創建了數據庫,然後從現有的數據庫表中移動了數據。 – Shuaib 2011-05-09 19:26:26

+2

我發現這個博客文章實際上解決了我的問題。關鍵是初始化Contex:Database.SetInitializer (null); http://agilenet.wordpress.com/2011/04/11/entity-framework-4-1-rc-with-an-existing-database/ – Shuaib 2011-05-10 00:58:50

+0

@Shuaib - 太好了!很高興你有一個解決方案。感謝您提供解決方案。 – IAmTimCorey 2011-05-10 01:03:12

相關問題