我清楚地知道我可以自定义同步模型和数据库架构过程的行为。我正在使用DropCreateDatabaseIfModelChanges<>
类来执行此操作。
假设我有一个工作项目和网站,DB
正在填写数据。一切都很好。
有一天我决定需要改变一些功能。更改将影响我的模型的属性(可以重命名/删除/添加,一些模型将是新的,一些模型将被删除)。
我的问题:当我检查所有更改时,我已部署网站上现有数据会发生什么?
我会失去它吗?如果是这样,我该如何避免呢?
答案 0 :(得分:5)
是的,如果您的模型发生变化并且您使用的是DropCreateDatabaseIfModelChanges<T>
为避免这种情况:
不要在生产中使用Db初始值设定项(可能除CreateDatabaseIfNotExists<T>
之外)。数据库初始化是为了平滑开发体验,而不是用于生产。
您需要的是新的Migration feature of Entity Framework 4.3.(目前在Beta1中),它提供了自动和基于代码库的数据库模式迁移的功能。
此外,您现在可以从*.config
文件设置DB initializer,这样您就可以轻松地在开发时间DropCreateDatabaseIfModelChanges
之间切换到生产配置中的初始化程序。