标签:== text 框架 文件的 ring 初始化 运维 异常 默认
目录
最近在用abp开发项目,需要将如下区域数据通过程序的初次运行种入数据库。
不知道大家是怎么去管理数据库跟后台程序的同步的,基于Git的数据库sql文件的管理——完美解决团队sql操作协同问题,此文是我以前的一个思考。
但是有三个缺点:
备注本文用的abp框架为第一代,官网:https://aspnetboilerplate.com/。 模板下载运行方法(前后端分离)可以参照此文abp框架运行——前后端分离(基于VUE)。
本文执行方法参照的是abp框架的默认语言种子数据种入。
//初始化区域数据的引用
public List<Area> InitialArea => GetInitialArea();
/// <summary>
/// 初始化数据
/// </summary>
/// <returns></returns>
private List<Area> GetInitialArea()
{
return new List<Area>
{
new Area(110000,"北京市", 0, 1),
new Area(110101,"东城区", 110100, 3),
new Area(110102,"西城区", 110100, 3)
};
}
构造函数,通过依赖注入容器拿到数据库上下文。
//PEMS系统数据库上下文
private readonly PEMSDbContext _context;
/// <summary>
/// 构造函数,通过依赖注入容器拿到数据库上下文
/// </summary>
/// <param name="context"></param>
public DefaultAreaCreator(PEMSDbContext context)
{
_context = context;
}
对依赖注入不明白的道友,可以参照此文 在net Core3.1上基于winform实现依赖注入实例
/// <summary>
/// 封装调用 创建初始化数据列表方法,这样上层调用看上去格式一致
/// </summary>
public void Create()
{
CreateArea();
}
/// <summary>
/// 创建初始化数据列表方法
/// </summary>
private void CreateArea()
{
foreach (var area in InitialArea)
{
AddAreaIfNotExists(area);
}
}
遍历初始区域表,将数据加入到数据库中去。
通过数据库上下文,获取数据库中的区域id区域名称。与初始化数据对比,丢失的数据,添加到数据库里去。
/// <summary>
/// 某个区域记录缺失时,将该记录重新种入数据库进行持久化
/// </summary>
/// <param name="area"></param>
private void AddAreaIfNotExists(Area area)
{
if (_context.Area.IgnoreQueryFilters().Any(a => a.Id== area.Id && a.AreaName == a.AreaName))
{
return;
}
_context.Area.Add(area);
_context.SaveChanges();
}
数据库中没有数据或者缺失某条或者某几条记录。结果都是如下初始数据。
位于项目的领域层。
/// <summary>
/// Area实体类
/// </summary>
public class Area : Entity<long>
{
public Area()
{
}
public Area(int id, string areaName, int parentID, int level)
{
this.Id = id;
this.AreaName = areaName;
this.ParentID = parentID;
this.level = level;
}
[StringLength(20)]
public string AreaName { get; set; }
public int ParentID { get; set; }
public int level { get; set; }
}
public Area(int id, string areaName, int parentID, int level)
{
this.Id = id;
this.AreaName = areaName;
this.ParentID = parentID;
this.level = level;
}
public Area()
{
}
标签:== text 框架 文件的 ring 初始化 运维 异常 默认
原文地址:https://www.cnblogs.com/JerryMouseLi/p/12427973.html