当前位置: 首页 > news >正文

EFCore通用数据操作类

public class ServiceBase : IServiceBase
{protected DbContext Context { get; private set; }public ServiceBase(IEFContext eFContext){Context = eFContext.CreateDBContext();}public void Commit(){this.Context.SaveChanges(); // 直接保存就行了}public void Delete<T>(int Id) where T : class{T t = this.Find<T>(Id);if (t == null) throw new Exception("t is null");    // 如果是空就报错this.Context.Set<T>().Remove(t);    // 删除这个this.Commit();  // 删完提交}public void Delete<T>(T t) where T : class{if (t == null) throw new Exception("t is null");    // 如果是空就报错this.Context.Set<T>().Attach(t);    // 尊卑删除这个实体this.Context.Set<T>().Remove(t);    // 删除这个this.Commit();  // 删完提交}public void Delete<T>(IEnumerable<T> tList) where T : class{// 将要删除的实体标记上foreach (var t in tList){this.Context.Set<T>().Attach(t);    // 要删除这个实体}this.Context.Set<T>().RemoveRange(tList);    // 删除这个集合this.Commit();  // 删完提交}public T Find<T>(int id) where T : class{return this.Context.Set<T>().Find(id);}public T Insert<T>(T t) where T : class{this.Context.Set<T>().Add(t);   // 添加this.Commit();  // 提交return t;}public IEnumerable<T> Insert<T>(IEnumerable<T> tList) where T : class{this.Context.Set<T>().AddRange(tList);this.Commit();  //return tList;}public IQueryable<T> Query<T>(Expression<Func<T, bool>> funcWhere) where T : class{return this.Context.Set<T>().Where<T>(funcWhere);}public void Update<T>(T t) where T : class{if (t == null) throw new Exception("t is null");this.Context.Set<T>().Attach(t);    // 跟踪实体this.Context.Entry<T>(t).State = EntityState.Modified;  // 标记为已修改this.Commit();}public void Update<T>(IEnumerable<T> tList) where T : class{// 跟踪和标记更改foreach (var t in tList){this.Context.Set<T>().Attach(t);this.Context.Entry<T>(t).State = EntityState.Modified;}this.Commit();}public virtual void Dispose(){if (this.Context != null)this.Context.Dispose();}
}

接口:

public interface IServiceBase
{#region Query/// <summary>/// 根据id查询实体/// </summary>/// <param name="id"></param>/// <returns></returns>T Find<T>(int id) where T : class;/// <summary>/// 查询/// </summary>/// <typeparam name="T"></typeparam>/// <param name="funcWhere"></param>/// <returns></returns>IQueryable<T> Query<T>(Expression<Func<T, bool>> funcWhere) where T : class;#endregion#region Add/// <summary>/// 新增数据,即时Commit/// </summary>/// <param name="t"></param>/// <returns>返回带主键的实体</returns>T Insert<T>(T t) where T : class;/// <summary>/// 新增数据,即时Commit/// 多条sql 一个连接,事务插入/// </summary>/// <param name="tList"></param>IEnumerable<T> Insert<T>(IEnumerable<T> tList) where T : class;#endregion#region Update/// <summary>/// 更新数据,即时Commit/// </summary>/// <param name="t"></param>void Update<T>(T t) where T : class;/// <summary>/// 更新数据,即时Commit/// </summary>/// <param name="tList"></param>void Update<T>(IEnumerable<T> tList) where T : class;#endregion#region Delete/// <summary>/// 根据主键删除数据,即时Commit/// </summary>/// <param name="t"></param>void Delete<T>(int Id) where T : class;/// <su+mary>/// 删除数据,即时Commit/// </summary>/// <param name="t"></param>void Delete<T>(T t) where T : class;/// <summary>/// 删除数据,即时Commit/// </summary>/// <param name="tList"></param>void Delete<T>(IEnumerable<T> tList) where T : class;#endregion#region Other/// <summary>/// 立即保存全部修改/// 把增/删的savechange给放到这里,是为了保证事务的/// </summary>void Commit();#endregion
}

http://www.lryc.cn/news/332803.html

相关文章:

  • java Web 辅助学习管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目
  • 使用Python实现K近邻算法
  • Celery的任务流
  • 使用Arcpy进行数据批处理-批量裁剪
  • 【攻防世界】ics-05
  • VTK的交互器
  • ChatGPT(3.5版本)开放无需注册:算力背后的数据之战悄然打响
  • python项目练习——14.学生管理系统
  • 基于SpringBoot的公益慈善平台
  • Python网络爬虫(一):HTML/CSS/JavaScript介绍
  • 机器学习每周挑战——旅游景点数据分析
  • 开发语言漫谈-C语言
  • vue3导入excel并解析excel数据渲染到表格中,纯前端实现。
  • Java常用API之Encoders类解读
  • java中大型医院HIS系统源码 Angular+Nginx+SpringBoot云HIS运维平台源码
  • windows部署Jenkins并远程部署tomcat
  • 设计模式|责任链模式(Chain of Responsibility Pattern)
  • 文件服务器之二:SAMBA服务器
  • 20.安全性测试与评估
  • 阿里巴巴实习面经
  • javaweb学习(day11-监听器Listener过滤器Filter)
  • 教你快速认识Java中的抽象类和接口
  • Linux第5课 Linux目录介绍
  • GitHub要求2FA?不慌,有它(神锁离线版)帮你!
  • C语言第四十弹---预处理(下)
  • SYS-2722音频分析仪SYS2722
  • 下载页面上的视频
  • 静态路由协议实验综合实验
  • qt MVC软件设计模式
  • 代码随想录刷题随记15-二叉树回溯