在以前版本的实体框架中,如果模型发生更改,可以使用某些类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中发生更改,则删除数据库
基础教程推荐
猜你喜欢
- C#字体池技术实现代码详解 2023-02-03
- C#11新特性预览及使用介绍 2023-06-08
- c# 利用易福门振动模块VSE002采集振动数据的方法 2023-02-09
- C#SuperSocket的搭建并配置启动总结 2023-01-22
- C#使用XSLT实现xsl、xml与html相互转换 2023-06-09
- C#中using语句的用法 2023-05-26
- C# string格式的日期时间字符串转为DateTime类型的方法 2022-10-27
- 使用C#编写自己的区块链挖矿算法 2023-01-27
- c# 三种方法调用WebService接口 2023-03-04
- C# mysql 处理 事务 回滚 提交 2023-11-25