using Yw.AutoMapper; using Yw.Entity; namespace IStation.DAL { /// /// 数据库访问基类 /// /// 实体类类型 public partial class BaseDAL where T : BaseEntity, new() { /// /// 连接配置 /// public virtual string FileName { get { return default; } } #region Protected /// /// 保存文件 /// protected void SaveObjectFile(string fileName, obj t) { var str = JsonHelper.Object2FormatJson(t); File.WriteAllText(fileName, str); } /// /// 查询文件 /// protected obj GetFileObject(string fileName) { if (!File.Exists(fileName)) return default; var str = File.ReadAllText(fileName); if (string.IsNullOrEmpty(str)) return default; return JsonHelper.Json2Object(str); } #endregion #region Get /// /// 获取全部 /// public virtual List GetAll() { var list = GetFileObject>(FileName); return list; } /// /// 获取指定ID对象 /// public virtual T GetByID(long id) { if (id < 1) return default; var list = GetFileObject>(FileName); if (list == null || list.Count < 1) return default; return list.Find(t => t.ID == id); } /// /// 获取指定ID对象列表 /// /// public virtual List GetByIds(List ids) { if (ids == null || ids.Count < 1) return default; var list = GetFileObject>(FileName); if (list == null || list.Count < 1) return default; return list.Where(t => ids.Contains(t.ID)).ToList(); } #endregion #region Insert /// /// 插入 /// public virtual long Insert(T entity) { if (entity == null) return default; if (entity.ID <= 0) { entity.ID = Yw.YitIdHelper.NextId(); } var list = GetFileObject>(FileName); if (list == null) list = new List(); list.Add(entity); SaveObjectFile(FileName, list); return entity.ID; } /// /// 批量插入 /// public virtual bool Inserts(List entities) { if (entities == null || entities.Count < 1) return default; var list = GetFileObject>(FileName); if (list == null) list = new List(); entities.ForEach(x => { if (x.ID <= 0) { x.ID = Yw.YitIdHelper.NextId(); } }); list.AddRange(entities); SaveObjectFile(FileName, list); return true; } /// /// 插入并返回 /// public virtual List InsertsR(List entities) { if (entities == null || entities.Count < 1) return default; var list = GetFileObject>(FileName); if (list == null) list = new List(); entities.ForEach(x => { if (x.ID <= 0) { x.ID = Yw.YitIdHelper.NextId(); } }); list.AddRange(entities); SaveObjectFile(FileName, list); return entities.Select(x => x.ID).ToList(); } #endregion #region Update /// /// 更新 /// public virtual bool Update(T entity) { if (entity == null) return default; var list = GetFileObject>(FileName); if (list == null || list.Count < 1) return default; var src = list.Find(x => x.ID == entity.ID); if (src == null) return default; entity.Map(src); SaveObjectFile(FileName, list); return true; } /// /// 批量更新 /// public virtual bool Updates(List entities) { if (entities == null || entities.Count < 1) return default; var list = GetFileObject>(FileName); if (list == null || list.Count < 1) return default; foreach (var entity in entities) { var src = list.Find(x => x.ID == entity.ID); if (src == null) return default; entity.Map(src); } SaveObjectFile(FileName, list); return true; } #endregion #region Exist /// /// 是否存在对象 /// public virtual bool Exist(long id) { if (id < 1) return default; var list = GetFileObject>(FileName); if (list == null || list.Count < 1) return default; return list.Exists(x => x.ID == id); } #endregion #region Delete /// /// 删除 /// public virtual bool Delete(T entity) { if (entity == null) return default; if (entity.ID < 1) return default; var list = GetFileObject>(FileName); if (list == null || list.Count < 1) return false; var src = list.Find(t => t.ID == entity.ID); if (src == null) return false; list.Remove(src); if (list.Count < 1) File.Delete(FileName); else SaveObjectFile(FileName, list); return true; } /// /// 批量删除 /// public virtual bool Deletes(List entities) { if (entities == null || entities.Count < 1) return default; if (entities.Exists(x => x.ID < 1)) return default; var list = GetFileObject>(FileName); if (list == null || list.Count < 1) return false; var ids = entities.Select(x => x.ID); list.RemoveAll(x => ids.Contains(x.ID)); if (list.Count < 1) File.Delete(FileName); else SaveObjectFile(FileName, list); return true; } /// /// 通过ID删除 /// public virtual bool DeleteByID(long id) { if (id < 1) return default; var list = GetFileObject>(FileName); if (list == null || list.Count < 1) return false; var src = list.Find(t => t.ID == id); if (src == null) return false; list.Remove(src); if (list.Count < 1) File.Delete(FileName); else SaveObjectFile(FileName, list); return true; } /// /// 通过ID列表删除 /// public virtual bool DeleteByIds(List ids) { if (ids == null || ids.Count < 1) return default; var list = GetFileObject>(FileName); list.RemoveAll(x => ids.Contains(x.ID)); if (list.Count < 1) File.Delete(FileName); else SaveObjectFile(FileName, list); return true; } /// /// 删除所有对象 /// public virtual bool DeleteAll() { File.Delete(FileName); return true; } #endregion #region Cover /// /// 覆盖 /// public virtual bool Covers(List entities) { if (entities == null || entities.Count() < 1) return default; foreach (var entity in entities) { if (entity.ID < 1) entity.ID = Yw.YitIdHelper.NextId(); } SaveObjectFile(FileName, entities); return true; } #endregion } }