在生产环境中使用DropCreateDatabaseIfModelChanges

Aug*_*gan 15 asp.net-mvc-3

我刚刚开始学习.NET MVC,所以这可能是一个愚蠢的问题,但我还没有找到一个好的答案.

我正在遵循Code First方法,使用Entity Framework为我构建我的数据库.我在Application_Start()方法中包含以下内容,以便允许我通过更改Model对象来编辑数据库.

Database.SetInitializer<ContactManagerDB>(new DropCreateDatabaseIfModelChanges<ContactManagerDB>());
Run Code Online (Sandbox Code Playgroud)

我只是想知道如果我将此应用程序推送到生产环境然后对我的模型进行一些更改然后更新应用程序会发生什么?这真的会丢失并在生产环境中重新创建数据库吗?

将变更推向生产环境的最佳做法是什么?使用Code First方法?

Ric*_*SFT 18

DropCreateDatabaseIfModelChanges应该只在开发的早期使用,而不是在生产机器上使用.如果您推送到生产计算机并进行架构更改,则会丢失所有数据.


小智 1

您可以删除生产环境中的 EdmMetadata 表。在这种情况下,EF 将不知道当前架构与新架构进行比较,因此它只会假设您知道自己在做什么,并且不会触及数据库架构。