gpt4 book ai didi

c# - 如果 EF Core 中的模型在没有迁移的情况下发生变化,则删除数据库

转载 作者:太空狗 更新时间:2023-10-29 21:32:35 28 4
gpt4 key购买 nike

在以前版本的 Entity Framework 中,如果模型发生变化,可以使用一些类 DropDatabseIfModelChanges 和其他相关类重新创建数据库。在 EF7 或 EF Core 中,我不知道该怎么做。运行迁移有时会出现问题,在项目开始时我需要不断更改模型。

最佳答案

目前没有简单的方法可以在 EFCore 中实现 DropDatabseIfModelChanges。 EF6 通过将模型的快照存储在 __MigrationHistory 表中并将其与当前模型进行比较来工作。 EnsureCreated 不会在 EFCore 中存储此类信息。

要模仿 EFCore 中的行为,您可以在 EFCore 中创建数据库时手动存储模型的哈希值,在启动时检查哈希值,如果数据库发生更改则删除并重新创建数据库。

var currentHash = MyHashingFunction(db.Model);

if (db.GetService<IRelationalDatabaseCreator>().Exists()
&& !db.Set<ModelHash>().Any(mh => mh.Value == currentHash))
{
// Drop if changed
db.Database.EnsureDeleted();
}

if (db.Database.EnsureCreated())
{
// Insert hash if created
db.Add(new ModelHash { Value = currentHash });
db.SaveChanges();
}

关于c# - 如果 EF Core 中的模型在没有迁移的情况下发生变化,则删除数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39235620/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com