实体框架 4 - 从模型更新数据库架构。不擦除表数据

发布于 2024-09-08 06:02:54 字数 288 浏览 4 评论 0原文

我正在开发一个新项目,在该项目中,我可以使用 Entity Framework 4 从模型到数据库方法进行工作。

我正在开发的项目采用敏捷方法,随着时间的推移,将推出不同的阶段。

模型优先方法适合我的情况吗?我注意到,当您“从模型生成数据库”时,它会从头开始重新创建整个架构,这显然会擦除数据库中的所有数据。

我希望有一种更“从模型更新数据库”的方法,其中数据库将被更改以反映更改而不是重新创建。

有人有使用 EF 进行此类工作流程的经验吗?

谢谢,

詹姆斯·谢尔顿

I'm working on a new project where I have the luxury of working from a Model to Database approach using Entity Framework 4.

The project I'm working on is taking an agile approach where different phases will be rolled out over time.

Will the Model First approach work in my case? I noticed when you "Generate Database from Model" it recreates the entire schema from scratch which will obviously wipe all the data that is in the db.

I was hoping for a more "Update Database from Model" approach where the db would just be altered to reflect the changes rather than recreated.

Does anyone have any experience working in this type of workflow with EF?

Thanks,

James Sheldon

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

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

发布评论

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

评论(2

黑白记忆 2024-09-15 06:02:55

您现在可以使用迁移并在数据库上提交您想要的内容。

看看这篇文章

you can now use migrations and commit what you desire on you database.

look at this article

少钕鈤記 2024-09-15 06:02:55

如果数据库已创建并且您希望在需要时应用 EF 迁移,则应遵循代码优先方法。

如果你想控制数据库的初始化方式,
实体框架提供了三个选项来初始化数据库。

  1. 如果不存在则创建数据库
  2. 如果模型更改则始终
  3. 删除并创建

如果不存在则创建数据库

此选项将在数据库不存在时创建数据库。这是实体框架代码优先的默认行为。如果模型发生变化,那么应用程序将抛出异​​常

public EFContext() : base("EFDatabase")
{
    Database.SetInitializer<EFContext>(new CreateDatabaseIfNotExists<EFContext>());
}

You should follow the code first approach if the database is already created and you want tp apply the EF migrations when required.

if you want to control how the database is initialized,
The Entity Framework has provided three options to initialize the database.

  1. Create database if not Exists
  2. Create Database always
  3. Drop and Create if Model changes

Create database if not Exists

This option will create the database if it does not exist. This is the default behaviour of Entity Framework Code first. If the model changes, then the application will throw an exception

public EFContext() : base("EFDatabase")
{
    Database.SetInitializer<EFContext>(new CreateDatabaseIfNotExists<EFContext>());
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文