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

stu*_*bax 1 database entity-framework ef-code-first asp.net-mvc-4

我清楚地知道我可以自定义同步模型和DB模式过程的行为.我正在DropCreateDatabaseIfModelChanges<>上课这样做.

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

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

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

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

nem*_*esv 5

是的,如果您的模型发生变化并且您正在使用,您将丢失数据 DropCreateDatabaseIfModelChanges<T>

为了避免这种情况

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

此外,您现在可以从文件中设置数据库初始化*.config程序,因此您可以轻松地在开发时间之间切换DropCreateDatabaseIfModelChanges到生产配置中的初始化程序.