2010-11-01 135 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

相关问题