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