Entity framework 代码优先:为什么实体框架在每次重新编译我的项目时都会重新创建数据库,即使代码中没有任何更改?

Entity framework 代码优先:为什么实体框架在每次重新编译我的项目时都会重新创建数据库,即使代码中没有任何更改?,entity-framework,ef-code-first,Entity Framework,Ef Code First,出于某种原因,实体框架(代码优先模型)会在每次重新编译/启动项目时重新创建数据库,即使我没有对代码进行任何更改。我想知道为什么?怎么能修好呢 谢谢大家! 您可以先在实体框架代码中定义数据库策略 1.DropCreateDatabaseAlways 2.CreateDatabaseIfNotExists 3.DropCreateDatabaseIfModelChanges 如果您需要自定义策略,那么您可以使用IDatabaseInitializer实现它,并在您的项目初始值设定项(引导程序)中使用

出于某种原因,实体框架(代码优先模型)会在每次重新编译/启动项目时重新创建数据库,即使我没有对代码进行任何更改。我想知道为什么?怎么能修好呢


谢谢大家!

您可以先在实体框架代码中定义数据库策略

1.DropCreateDatabaseAlways

2.CreateDatabaseIfNotExists

3.DropCreateDatabaseIfModelChanges

如果您需要自定义策略,那么您可以使用IDatabaseInitializer实现它,并在您的项目初始值设定项(引导程序)中使用

Database.SetInitializer(新的DropCreateDatabaseIfModelChanges());

您的DbContext类是什么样子的?嗯。。。空间太小,无法全部引用,但它是一个标准的上下文类,除了这个FluentAPI片段外,没有异常代码:protectedoverride void OnModelCreating(DbModelBuilder modelBuilder){//设置listItems和用户表modelBuilder.Entity()之间的关系.HasRequired(f=>f.listMember).WithMany().HasForeignKey(a=>a.ListMemberId).WillCascadeOnDelete(false);}似乎只有同时启动两个Visual Studio项目(web应用程序和单元测试)时问题才会存在。当我只启动web应用程序时,数据库不会重新创建。
Database.SetInitializer<DbContext>(new DropCreateDatabaseIfModelChanges<DbContext>());