仅在EF4代码上创建数据库后更改模型

时间:2010-11-01 21:48:38

标签: entity-framework-4 code-first ef4-code-only

嘿,抱歉我的英语不好...... 使用EF4代码,我创建了一些POCO类,我的数据库是从那里生成的。一切正常,我在表格中插入了一些数据,但现在我需要在我的一个类上创建一个新属性。如果我只是创建它,应用程序给我例外: {“自创建数据库以来,支持'TestContext'上下文的模型已更改。手动删除/更新数据库,或使用IDatabaseInitializer实例调用Database.SetInitializer。例如,RecreateDatabaseIfModelChanges策略将自动删除并重新创建数据库,并可选择为其添加新数据。“}

我试图在桌面上手动创建字段,但它仍在抱怨...有人知道是否有办法,如果是这样如何我可以手动更新数据库架构(i不想重新创建它,因为我已经有数据)来匹配模型?

2 个答案:

答案 0 :(得分:1)

EF生成部分类。因此,您可以在另一个分部类中添加新属性(字段)。

答案 1 :(得分:1)

如果您确保新列与新属性完全匹配,则应该有效。

例如,如果添加属性NewProp

public class MyEntity
{
    [Key]
    public int Id;

    public string PropA;
    public int PropB;

    public int NewProp;

}

然后在你的数据库表MyEntities中,你将添加一个int类型的NewProp而不是null。

您可以做些什么来检查您添加的列是否正确,是重命名您的数据库,然后让Code-First重新创建数据库,看看原始数据库和新数据库之间有什么不同。