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

发布于 2024-09-30 15:47:50 字数 405 浏览 8 评论 0原文

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

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

Hey, sorry for my bad english...
Using EF4 code-only, I have created some POCO classes and my database was generated from that. All worked fine, I inserted some data on the tables but now I need to create a new property on one of my classes. If i just create it, the application give me the exception:
{"The model backing the 'TestContext' context has changed since the database was created. Either manually delete/update the database, or call Database.SetInitializer with an IDatabaseInitializer instance. For example, the RecreateDatabaseIfModelChanges strategy will automatically delete and recreate the database, and optionally seed it with new data."}

I tried to create manually the field on the table, but it is still complaining... does someone know if there is a way and if so how can I manually update the database schema (i don't want to recreate it because i already have data) to match the model?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

岁月流歌 2024-10-07 15:47:50

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

例如,如果您

public class MyEntity
{
    [Key]
    public int Id;

    public string PropA;
    public int PropB;

    public int NewProp;

}

在数据库表 MyEntities 中添加属性 NewProp,则将添加类型为 int not null 的 NewProp 列。

要检查添加的列是否正确,您可以执行以下操作:重命名数据库,然后让 Code-First 重新创建数据库并查看原始数据库和新数据库之间有什么不同。

It should work if you make sure that your new column match exactly your new property.

For example, if you add a property NewProp

public class MyEntity
{
    [Key]
    public int Id;

    public string PropA;
    public int PropB;

    public int NewProp;

}

then in your database table MyEntities, you would add a column NewProp of type int not null.

What you can do to check if the column you add is correct, is to rename your database, then let Code-First recreate the database and see what's different between the original and new databases.

岁吢 2024-10-07 15:47:50

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

EF generates partial classes. So you can add new properties(fields) in another partial class.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文