在以前版本的实体框架中,如果模型发生更改,可以使用某些类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#字符串String及字符Char的相关方法 2023-06-05
- 一、netcore跨平台之 Linux上部署netcore和webapi 2023-09-27
- C#使用ThreadPriority设置线程优先级 2023-05-31
- C#无损转换Image为Icon的方法 2022-11-06
- C#中OpenCvSharp 通过特征点匹配图片的方法 2023-01-28
- Unity 百度AI实现人像动漫化效果 2023-05-12
- dotnet core链接mongodb代码实例 2023-02-03
- Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台 2023-09-28
- C#使用CefSharp控件实现爬虫 2023-06-14
- c# Winform自定义控件-仪表盘功能 2023-01-28