在以前版本的实体框架中,如果模型发生更改,可以使用某些类DropDatabseIfModelChanges和其他相关类重新创建数据库.在EF7或EF Core我不知道该怎么做.运行迁移有时会出现问题,在项目开始时我需要不断更改模型.解决方法:...

在以前版本的实体框架中,如果模型发生更改,可以使用某些类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中发生更改,则删除数据库


基础教程推荐
猜你喜欢
- WPF实现绘制扇形统计图的示例代码 2023-07-04
- 利用C#守护Python进程的方法 2023-02-02
- asp.net core项目mvc权限控制:分配权限 2022-10-27
- Unity3D动态生成平面网格 2023-01-11
- c# – MemoryMappedFiles:可以为文件分配多少内存 2023-09-18
- RedisHelper (C#) 2023-11-11
- C#指针变量与unsafe的实现 2023-07-18
- c# – 在Windows应用商店应用中使用旧版dll(.NET)? 2023-09-19
- Unity C#执行bat脚本的操作 2023-04-09
- unity实现弧形移动 可角度自定 2023-02-25