2010-11-01 134 views
1

嘿,對不起,我的英語不好...... 使用EF4代碼,我已經創建了一些POCO類,我的數據庫是從那裏生成的。一切正常,我在表格上插入了一些數據,但現在我需要在我的一個類上創建一個新的屬性。如果我只是創建它,應用程序給我例外: {「自從創建數據庫以來,支持'TestContext'上下文的模型已經發生了變化。無論是手動刪除/更新數據庫還是使用IDatabaseInitializer實例調用Database.SetInitializer 。例如,RecreateDatabaseIfModelChanges策略會自動刪除並重新創建數據庫,並可選擇將它與新數據結合使用。「}只在EF4代碼上創建數據庫後更改模型

我試圖手動創建表格中的字段,但它仍在抱怨...有人知道是否有辦法,如果有的話如何我可以手動更新數據庫架構(我不想重新創建它,因爲我已經有數據)以匹配模型?

回答

1

它應該工作,如果你確保你的新列匹配你的新屬性。

例如,如果您添加屬性NewProp

public class MyEntity 
{ 
    [Key] 
    public int Id; 

    public string PropA; 
    public int PropB; 

    public int NewProp; 

} 

然後在數據庫表MyEntities,你會添加類型爲int的列NewProp不爲空。

你可以做些什麼來檢查你添加的列是否正確,重命名你的數據庫,然後讓Code-First重新創建數據庫,看看原始數據庫和新數據庫有什麼不同。

+0

感謝Christian,我已經試過這樣做,但是問題仍然存在,因爲我在Create Database ServerOnlyIfNotExists中使用了CreateDatabaseOnlyIfNotExists而不是null。Database.SetInitializer:/ - 這是缺少的鏈接。但你的回答給了我暗示,我正在看錯地方:) – Leo 2010-11-02 19:36:13

1

EF生成部分類。所以你可以在另一個分部類中添加新的屬性(字段)。

+0

湯姆,也許我沒有正確表達自己......我在改變我的類時沒有問題,而且我只使用代碼(沒有edmx,請參閱http://blogs.msdn.com/b/efdesign /archive/2009/06/10/code-only.aspx)。我想知道的是,如何手動更新數據庫以匹配我的POCO類,因爲在生成數據庫之後,每個類的更改都會給我以上例外:/ – Leo 2010-11-02 02:50:56

相關問題