当前位置: 首页 > 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
}

相关文章:

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&l…...

java Web 辅助学习管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 java Web 辅助学习管理系统是一套完善的信息管理系统&#xff0c;结合java 开发技术和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 前段主要技术 bootstr…...

使用Python实现K近邻算法

K近邻&#xff08;K-Nearest Neighbors&#xff0c;简称KNN&#xff09;是一种简单而有效的分类和回归算法&#xff0c;它通过比较新样本与训练样本的距离来进行预测。在本文中&#xff0c;我们将使用Python来实现一个基本的K近邻算法&#xff0c;并介绍其原理和实现过程。 什…...

Celery的任务流

Celery的任务流 在之前调用任务的时候只是使用delay()和apply_async()方法。但是有时我们并不想简单的执行单个异步任务&#xff0c;比如说需要将某个异步任务的结果作为另一个异步任务的参数或者需要将多个异步任务并行执行&#xff0c;返回一组返回值&#xff0c;为了实现此…...

使用Arcpy进行数据批处理-批量裁剪

时空大数据使我们面临前所未有的机遇和挑战&#xff0c;尤其在地学、遥感或空间技术等专业领域&#xff0c;无疑是一个全新的时代。 伴随着时空大数据的到来&#xff0c;海量数据的处理是一个所有科研工作者都无法忽视的重要问题。传统的数据&#xff08;主要指空间数据&#x…...

【攻防世界】ics-05

php://filter 伪协议查看源码 preg_replace 函数漏洞 1.获取网页源代码。多点点界面&#xff0c;发现点云平台设备维护中心时&#xff0c;页面发生变化。 /?pageindex 输入什么显示什么&#xff0c;有回显。 用php://filter读取网页源代码 ?pagephp://filter/readconvert.…...

VTK的交互器

VTK中鼠标消息是在交互类型对象&#xff08;interactorstyle&#xff09;中响应&#xff0c;因此通过为交互类型对象&#xff08;interactorstyle&#xff09;添加观察者&#xff08;observer&#xff09;来监听相应的消息&#xff0c;当消息触发时&#xff0c;由命令模式执行相…...

ChatGPT(3.5版本)开放无需注册:算力背后的数据之战悄然打响

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…...

python项目练习——14.学生管理系统

这个项目可以让用户管理学生的信息&#xff0c;包括学生的姓名、年龄、成绩等&#xff0c;并提供添加、编辑、删除、查询等功能。这个项目涉及到数据库操作、用户界面设计、数据验证等方面的技术。 代码示例&#xff1a; import tkinter as tk # 导入 Tkinter 库 import sqli…...

基于SpringBoot的公益慈善平台

一、项目背景介绍&#xff1a; 基于SpringBoot的公益慈善平台是一款致力于为社会所有人带来便利服务的B/S架构的应用程序。随着网络技术的发展&#xff0c;公益慈善网站已经逐渐成为公益行动的主要信息载体。在这个平台上&#xff0c;主要有管理员、捐赠者和志愿者三种角色&…...

Python网络爬虫(一):HTML/CSS/JavaScript介绍

1 HTML语言 1.1 HTML简介 HTML指的是超文本标记语言:HyperText Markup Language,它不是一门编程语言,而是一种标记语言,即一套标记标签。HTML是纯文本类型的语言,使用HTML编写的网页文件也是标准的文本文件,可以使用任意的文本编辑器例如记事本打开HTML文件,查看并修改H…...

机器学习每周挑战——旅游景点数据分析

数据的截图&#xff0c;数据的说明&#xff1a; # 字段 数据类型 # 城市 string # 名称 string # 星级 string # 评分 float # 价格 float # 销量 int # 省/市/区 string # 坐标 string # 简介 string # 是否免费 bool # 具体地址 string拿到数据…...

开发语言漫谈-C语言

个人认为C语言是最伟大的开发语言&#xff08;没有之一&#xff09;。C语言开创了高级语言的新时代。比C更低级的是汇编语言&#xff0c;这个东西就是反人类的玩意。之后的语言或多或少都受C语言的影响。更神奇的是直到现在&#xff0c;C语言还有生命力。C语言的发明人丹尼斯里…...

vue3导入excel并解析excel数据渲染到表格中,纯前端实现。

需求 用户将已有的excel上传到系统&#xff0c;并将excel数据同步到页面的表格中进行二次编辑&#xff0c;由于excel数据不是最终数据&#xff0c;只是批量的一个初始模板&#xff0c;后端不需要存储&#xff0c;所以该功能由前端独立完成。 吐槽 系统中文件上传下载预览三部…...

Java常用API之Encoders类解读

写在开头&#xff1a;本文用于作者学习Java常用API 我将官方文档中Encoders类中所有API全测了一遍并打印了结果&#xff0c;日拱一卒&#xff0c;常看常新 在Spark中&#xff0c;Encoders类提供了一些静态方法用于创建不同数据类型的编码器。 首先&#xff0c;我遇到这样一个…...

java中大型医院HIS系统源码 Angular+Nginx+SpringBoot云HIS运维平台源码

java中大型医院HIS系统源码 AngularNginxSpringBoot云HIS运维平台源码 云HIS系统是一款满足基层医院各类业务需要的健康云产品。该产品能帮助基层医院完成日常各类业务&#xff0c;提供病患预约挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生工作站和护士工…...

windows部署Jenkins并远程部署tomcat

目录 1、Jenkins官网下载Jenkins 2、安装Jenkins 3、修改Home directory 4、插件安装及系统配置 5、Tomcat安装及配置 5.1、修改配置文件,屏蔽以下代码 5.2、新增登录用户 5.3、编码格式修改 5.4、启动tomcat 6、Jenkins远程部署war包 6.1、General配置 6.2、Sourc…...

设计模式|责任链模式(Chain of Responsibility Pattern)

文章目录 结构优点缺点使用责任链的步骤示例有哪些知名框架采用了责任链模式责任链模式和链表有什么关联常见面试题 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为设计模式&#xff0c;它允许你创建一个对象链。请求将沿着这个链传递&#xff…...

文件服务器之二:SAMBA服务器

文章目录 什么是SAMBASAMBA的发展历史与名称的由来SAMBA常见的应用 SAMBA服务器基础配置配置共享资源Windows挂载共享Linux挂载共享 什么是SAMBA 下图来自百度百科 SAMBA的发展历史与名称的由来 Samba是一款开源的文件共享软件&#xff0c;它基于SMB&#xff08;Server Messa…...

20.安全性测试与评估

每年都会涉及&#xff1b;可能会考大题&#xff1b;多记&#xff01;&#xff01;&#xff01; 典型考点&#xff1a;sql注入、xss&#xff1b; 从2个方面记&#xff1a; 1、测试对象的功能、性能&#xff1b; 2、相关设备的工作原理&#xff1b; 如防火墙&#xff0c;要了解防…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...