繁体   English   中英

EF6尝试在运行时创建表,但没有等待更改

[英]EF6 Tries To Create Tables at Runtime, but No Pending Changes

我正在为我的ASP.NET项目使用Entity Framework 6.1.3 Code First Migrations。 我已禁用自动迁移功能。 我运行了Add-MigrationUpdate-Database命令,EF无法在__MigrationHistoryDbContext之间找到任何挂起的更改。 但是,当我启动应用程序时,它会尝试从上下文创建表,如果它们已经存在于__MigrationHistory表的最新条目中。 (我确实从迁移表中检查了EDMX XML文件)。 你有什么想法,我怎么能解决这个问题,而不会丢失任何数据? TES测试测试

如果您不希望应用程序始终在运行时重新创建表,则必须更改数据库初始化程序。 在您的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM