C# 如果我的模型更改,如何在EF中重新创建数据库?
我创建了一个DbContext,如下所示:C# 如果我的模型更改,如何在EF中重新创建数据库?,c#,.net,entity-framework,C#,.net,Entity Framework,我创建了一个DbContext,如下所示: public class myDB : DbContext { public DbSet<Party> Parties { get; set; } public DbSet<Booking> Bookings { get; set; } } 公共类myDB:DbContext { 公共数据库集参与方{get;set;} 公共数据库集预订{get;set;} } 这就生成了我的数据库和上面
public class myDB : DbContext
{
public DbSet<Party> Parties { get; set; }
public DbSet<Booking> Bookings { get; set; }
}
公共类myDB:DbContext
{
公共数据库集参与方{get;set;}
公共数据库集预订{get;set;}
}
这就生成了我的数据库和上面的两个表..太好了
然后我决定在混合中添加另一个DbSet&我得到了一个错误:
自创建数据库以来,支持“参与方”上下文的模型已更改
我知道使用modelbuilder.IncludeMetadataInDatabase=false对此进行了修复
和数据库.SetInitializer(null)代码>
1) 将新类添加到上下文并在数据库中生成它们的正确方法是什么
2) 在我自己徒劳地试图解决这个问题时,我删除了表并尝试重新运行应用程序,但没有成功,然后我删除了完整的数据库并重新运行,但它没有重新生成数据库。如何从头开始?是否有缓存?尝试将其放入Global.asax.cs应用程序的\u start()方法中
我相信您正在寻找:
Database.SetInitializer<ClubmansGuideDB>(new DropCreateDatabaseIfModelChanges<ClubmansGuideDB>());
(使用
如果您还没有对数据库的引用)您可以让实体框架通过使用数据库初始值设定项
重新创建整个数据库,或者如果您想迁移数据,可以查看
当模型更改时,以下操作将重新创建数据库:
Database.SetInitializer<myDB>(new DropCreateDatabaseIfModelChanges<myDB>());
Database.SetInitializer(新的DropCreateDatabaseIfModelChanges());
entity framework issue并不是我见过的最好的标题。当有这么多好的答案时,这条评论有什么用呢?您还可以覆盖种子方法并用测试数据填充数据库。SetInitializer(新的DropCreateDatabaseIfModelChanges());数据库初始化(true);为什么不从我这里工作??
Database.SetInitializer(new EntityBase());
Database.SetInitializer<ClubmansGuideDB>(new DropCreateDatabaseIfModelChanges<ClubmansGuideDB>());
using (var context = new ClubmansGuideDB()) {
context.Database.Initialize(force: true);
}
Database.SetInitializer<myDB>(new DropCreateDatabaseIfModelChanges<myDB>());