Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 4 仅在EF4代码上创建数据库后更改模型_Entity Framework 4_Code First_Ef4 Code Only - Fatal编程技术网

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

Entity framework 4 仅在EF4代码上创建数据库后更改模型,entity-framework-4,code-first,ef4-code-only,Entity Framework 4,Code First,Ef4 Code Only,嘿,对不起,我的英语不好。。。 仅使用EF4代码,我创建了一些POCO类,并由此生成了我的数据库。一切都很好,我在表中插入了一些数据,但现在我需要在我的一个类上创建一个新属性。如果我只是创建它,应用程序会给我一个例外: {"“TestContext”上下文的支持模型在数据库创建后已更改。请手动删除/更新数据库,或使用IDatabaseInitializer实例调用database.SetInitializer。例如,RecreateDatabaseIfModelChanges策略将自动删除和重新

嘿,对不起,我的英语不好。。。 仅使用EF4代码,我创建了一些POCO类,并由此生成了我的数据库。一切都很好,我在表中插入了一些数据,但现在我需要在我的一个类上创建一个新属性。如果我只是创建它,应用程序会给我一个例外: {"“TestContext”上下文的支持模型在数据库创建后已更改。请手动删除/更新数据库,或使用IDatabaseInitializer实例调用database.SetInitializer。例如,RecreateDatabaseIfModelChanges策略将自动删除和重新创建数据库,并可以选择使用新da为其种子ta.“}


我试图手动创建表上的字段,但它仍在抱怨…是否有人知道是否有方法,如果有,如何手动更新数据库架构(我不想重新创建它,因为我已经有数据)以匹配模型?

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

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

例如,如果添加属性NewProp

public class MyEntity
{
    [Key]
    public int Id;

    public string PropA;
    public int PropB;

    public int NewProp;

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


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

Tom,也许我没有正确地表达自己……我在更改类方面没有问题,我只使用代码(没有edmx,请参阅)。我想知道的是,如何手动更新数据库以匹配我的POCO类,因为在生成数据库后,类上的每次更改都会给我带来上述异常:/Thank Christian,我已经尝试过这样做,但问题仍然存在,因为我在数据库上使用CreateDatabaseOnlyIfNotExists而不是nulle、 SetInitializer:/-这是缺少的链接。但是您的回答给了我一个提示,我看错了地方:)