EF代码首次建模将如何影响数据库中现有的数据

时间:2012-01-21 16:09:25

标签: database entity-framework asp.net-mvc-4 ef-code-first

我清楚地知道我可以自定义同步模型和数据库架构过程的行为。我正在使用DropCreateDatabaseIfModelChanges<>类来执行此操作。

假设我有一个工作项目和网站,DB正在填写数据。一切都很好。

有一天我决定需要改变一些功能。更改将影响我的模型的属性(可以重命名/删除/添加,一些模型将是新的,一些模型将被删除)。

我的问题:当我检查所有更改时,我已部署网站上现有数据会发生什么?

我会失去它吗?如果是这样,我该如何避免呢?

1 个答案:

答案 0 :(得分:5)

是的,如果您的模型发生变化并且您使用的是DropCreateDatabaseIfModelChanges<T>

,则会丢失数据

为避免这种情况:

不要在生产中使用Db初始值设定项(可能除CreateDatabaseIfNotExists<T>之外)。数据库初始化是为了平滑开发体验,而不是用于生产。 您需要的是新的Migration feature of Entity Framework 4.3.(目前在Beta1中),它提供了自动和基于代码库的数据库模式迁移的功能。

此外,您现在可以从*.config文件设置DB initializer,这样您就可以轻松地在开发时间DropCreateDatabaseIfModelChanges之间切换到生产配置中的初始化程序。