[英]EF6 Tries To Create Tables at Runtime, but No Pending Changes
我正在为我的ASP.NET项目使用Entity Framework 6.1.3 Code First Migrations。 我已禁用自动迁移功能。 我运行了Add-Migration
和Update-Database
命令,EF无法在__MigrationHistory
和DbContext
之间找到任何挂起的更改。 但是,当我启动应用程序时,它会尝试从上下文创建表,如果它们已经存在于__MigrationHistory
表的最新条目中。 (我确实从迁移表中检查了EDMX XML文件)。 你有什么想法,我怎么能解决这个问题,而不会丢失任何数据?
如果您不希望应用程序始终在运行时重新创建表,则必须更改数据库初始化程序。 在您的DBContext
类中,您应该看到一些这样的代码(假设您的DBContext
被称为MyDbContext
):
static MyDbContext()
{
// You should see this...
Database.SetInitializer(new DropCreateDatabaseAlways<MyDbContext>());
// ... or this ...
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyDbContext>());
}
第一个初始化程序将始终重新创建数据库,第二个初始化程序将仅在模型更改时重新创建数据库。 如果未指定初始化程序,则默认为CreateDatabaseIfNotExists
,顾名思义,如果数据库尚不存在,将创建数据库。 您也可以在配置文件中设置初始化程序。 有关更多示例和信息,请参阅此资源 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.