代码之家  ›  专栏  ›  技术社区  ›  Leo

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

  •  1
  • Leo  · 技术社区  · 14 年前

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

    我试图手动创建表上的字段,但它仍在抱怨。。。有人知道有没有办法 我可以手动更新数据库架构(我不想重新创建它,因为我已经有数据)以匹配模型吗?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Christian Lavallee    14 年前

    如果您确保您的新列与新属性完全匹配,那么它应该可以工作。

    例如,如果添加属性NewProp

    public class MyEntity
    {
        [Key]
        public int Id;
    
        public string PropA;
        public int PropB;
    
        public int NewProp;
    
    }
    

    然后在数据库表MyEntities中,添加int not null类型的列NewProp。

    要检查添加的列是否正确,可以执行的操作是重命名数据库,然后让代码首先重新创建数据库,并查看原始数据库和新数据库之间的区别。

        2
  •  1
  •   Tom Vervoort    14 年前