我像这样创建了一个 DbContext :
public class myDB : DbContext
{
public DbSet<Party> Parties { get; set; }
public DbSet<Booking> Bookings { get; set; }
}
这生成了我的数据库和上面的两个表..太棒了
然后我决定将另一个 DbSet 添加到组合中,但出现错误:
the model backing the 'Party' context has changed since the database was created
我知道使用 modelbuilder.IncludeMetadataInDatabase = false;
修复了这个问题和 Database.SetInitializer<ClubmansGuideDB>(null);
1) 将我的新类添加到上下文并在数据库中生成它们的正确方法是什么?
2) 在我自己解决这个问题的徒劳尝试中,我删除了表并尝试重新运行应用程序但没有成功,然后我删除了完整的数据库并重新运行并且它没有重新生成数据库。我如何从头开始 - 某处是否有一些缓存?
最佳答案
我相信您正在寻找:
Database.SetInitializer<ClubmansGuideDB>(new DropCreateDatabaseIfModelChanges<ClubmansGuideDB>());
从 EF 4.1 及更高版本开始。
请注意,这假设您有权删除您的数据库。我在本地执行此操作是为了便于开发,但在暂存/生产中禁用它(我执行手动模式比较并推送我的更改)。
顺便说一句,为了测试,如果你需要强制重新创建数据库,你可以这样做:
using (var context = new ClubmansGuideDB()) {
context.Database.Initialize(force: true);
}
(如果您还没有对数据库的引用,则使用)
关于c# - 如果我的模型发生变化,如何在 EF 中重新创建数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8793184/