Git.Framework 框架随手记--ORM编辑删除
前面一篇文章<Git.Framework 框架随手记--ORM新增操作>主要讲解了如何使用Git.Framework往数据库中添加数据。其操作过程相对简单,本章主要记录如何编辑数据和修改数据。
一. 编辑数据
在Git.Framework中主要提供了如下编辑方法
int Update(List<T> list);
int Update(T entity);
int Update(List<T> list, bool isOpenTrans);
int Update(T entity, bool isOpenTrans);
以上方法可以分为两组,区别在于两个输入参数的方法是可以启用事务操作的,在前面的文章中已经提到过。默认是不启用事务操作的。
public int Update(AdminEntity entity)
{
entity.Include(a => new { a.Phone, a.Email, a.Mobile, a.RealName, a.RoleNum, a.DepartNum, a.UserName, a.PassWord, a.UpdateTime });
entity.Where(a => a.UserCode == entity.UserCode);
int line = this.Admin.Update(entity);
return line;
}
结合昨天使用的实体映射类,数据访问接口,以及数据操作类,我们队Admin表进行数据修改操作。
entity.Include(a => new { a.Phone, a.Email, a.Mobile, a.RealName, a.RoleNum, a.DepartNum, a.UserName, a.PassWord, a.UpdateTime });
这段代码应该很熟悉,上一篇文章已经介绍到了这个用法,用于包含操作哪些字段,其中至少包含一个字段。但是这里要注意的是,如果Include中包含一个主键或者自动标识列是不会去真正包含的,其默认会将其他过滤掉,在实际的数据库操作过程中我们也不会去修改主键值。
要想执行语句就要调用Update() 方法,该方法会向数据库发送命令操作。上一篇已经了解到数据库操作实际上最终是生成SQL语句执行的。上面一段代码生成的SQL语句如下:
UPDATE [dbo].[Admin] SET [Phone]=@Phone,[Email]=@Email,[Mobile]=@Mobile,[RealName]=@RealName,[RoleNum]=@RoleNum,[DepartNum]=@DepartNum,[UserName]=@UserName,[PassWord]=@PassWord,[UpdateTime]=@UpdateTime WHERE Admin.[UserCode]=@0_Admin_UserCode
如果看到这种代码相信大家都比较熟悉了,一个带条件的SQL语句,其中都是使用占位符参数。在前面几篇也讲到了,这个框架的最底层其实还是ADO.NET,只是在表面封装了一层看不到而已,而且在ADO.NET底层封装还提供了相应的访问类,后面详述。
二. 编辑多行数据
在重载Update()方法的时候,我们看到有个参数List<T>,这个方法可以用于同时修改多行数据。
List<UA_USERS> list = new List<UA_USERS>();
UA_USERS user = new UA_USERS();
user.PASSWORD = "";
user.Include(a => new { a.PASSWORD });
user.USER_ID = "AA0";
user.Where(a => a.USER_ID == user.USER_ID);
list.Add(user); user = new UA_USERS();
user.PASSWORD = "";
user.USERNAME = "艾弗森"; user.Include(a => new { a.PASSWORD,a.USERNAME });
user.USER_ID = "AA1";
user.Where(a => a.USER_ID == user.USER_ID);
list.Add(user); int line = provider.Update(list,true);
修改多行数据
我们再集合中添加了三个实体对象,每个实体对象都有其相应的修改字段以及条件,在调用Update 方法的时候会生成3行SQL语句,然后同时发送命令执行。这里三条语句的执行不是循环打开3个连接,而是使用一个连接同时发送三行SQL,相当于批处理模式。
三. 删除方法简介
(1) int Delete(IEnumerable<int> ids);
(2) int Delete(int id);
(3) int Delete(object value);
(4) int Delete(T entity);
(5) int Delete(IEnumerable<int> ids, bool isOpenTrans);
(6) int Delete(int id, bool isOpenTrans);
(7) int Delete(object value, bool isOpenTrans);
(8) int Delete(T entity, bool isOpenTrans);
(9) int DeleteBatch(IEnumerable<T> list, bool isOpenTrans);
在删除数据上提供了九个重载方法,但是在这九个方法中并不是每个方法都用的那么多。其中这九个方法可以分为三组: (1) 不用事务处理 (2) 使用事务处理 (3) 批量删除
但是要注意的是这里的批量删除不是指删除多行数据,而是和上面的Update()方法一样,同时执行多个SQL语句.
(1) int Delete(IEnumerable<int> ids); 根据主键自动标识列批量删除数据
(2) int Delete(int id); 根据逐渐标识列删除数据
(3) int Delete(object value);根据主键值删除数据
(4) int Delete(T entity); 根据自定义条件删除数据,用的最多,比较灵活
(9) int DeleteBatch(IEnumerable<T> list, bool isOpenTrans);批量删除数据,用的也比较多,自定义条件删除
InStorDetailEntity detail = new InStorDetailEntity();
detail.Where(a => a.OrderNum == entity.OrderNum);
this.InStorDetail.Delete(detail);
上面这段代码用于删除InStorDetail表中的数据,而且附带了条件,使用Where应该都明白和SQL中的Where是一样的作用
detail.Where(a => a.OrderNum == entity.OrderNum);
只是这里的Where是一个方法,并且使用到了Lambda表达式,我们可以简单的翻译为 字段OrderNum= 值; 这个在学习过Linq to SQL或者Entity Framework的应该都可以明白。如果最终要执行还是要调用Delete 方法的。
DELETE FROM [dbo].[InStorDetail] WHERE InStorDetail.[OrderNum]=@0_InStorDetail_OrderNum
上面的代码生成如上SQL语句,如果.NET代码不能够理解其意思,对比SQL就应该明白了
Git.Framework 框架随手记--ORM编辑删除的更多相关文章
- Git.Framework 框架随手记--ORM条件组合
在上一篇<Git.Framework 框架随手记--ORM新增操作>中简单记录了如何对数据进行删除和修改,其用法都非常简单,在文章中提到了Where()方法,本文将详述Where() 等条 ...
- Git.Framework 框架随手记--ORM项目工程
前面已经简单介绍过了该框架(不一定是框架),本文开始重点记录其使用过程.可能记录的内容不是太详尽,框架也可能非常烂,但是里面的代码句句是实战项目所得.本文非教唆之类的文章,也非批判之类的文章,更不是炫 ...
- Git.Framework 框架随手记--ORM查询数据集合 一
本文记录Git.Framework之ORM中最为浓墨重彩的一篇,查询集合.根据自己做的项目统计这个是使用频率最高的一个. 一. 查询集合方法简介 (1)List<T> GetList(); ...
- Git.Framework 框架随手记--ORM新增操作
本篇主要记录具体如何新增数据,废话不多说,开始进入正文. 一. 生成工程结构 上一篇已经说到了如何生成工程结构,这里在累述一次. 1. 新建项目总体结构 使用VS新建项目结构,分层结构可以随意.我们使 ...
- Git.Framework 框架随手记--ORM查询数据集合 二
一. 分组查询 在SQL中使用Group By 来对数据分组,在实际中分组中一般与聚合函数一并使用.在Git.Framework中提供了相应的分组方法 DataTable Group(T entit ...
- Git.Framework 框架随手记--ORM查询返回实体对象
使用ORM有一个优势,可以通过某种机制将数据库中的数据转化为自己想要的对象形式数据.本章记录一下如何使用Git.Framework返回实体对象 一. Git.Framework 中提供的方法 在Git ...
- Git.Framework 框架随手记--存储过程简化
在很多的ORM中对存储过程操作都是一个棘手的地方,因为存储过程是一段预编译的代码,其中可以包含很多处理过程.在Git.Framework中也同样存在这样的问题,目前没有能力解决这个问题.但是对于存储过 ...
- Git.Framework 框架随手记-- 分享一个"比较垃圾"的项目
本文主要分享一个Git.Framework 开发的一个项目的部分源码,此项目代码"比较垃圾",所以请各位码农,码畜,码神,码圣勿喷!发此文只为记录工作问题以及分享问题! 一. 项目 ...
- Git.Framework 框架随手记--历史原因
Git.Framework 是近几年工作的一些工作经验总结,虽不能和某些知名的框架相提并论,但是还是比较实用的.此框架经过三年多的升级和维护,已经具有较强的实用性,在此记录该框架的使用操作方式,贡献给 ...
随机推荐
- Android 开发之 Android 开发的起步
前言 Android 开发的起步 我们可以先来看看百科上面怎么说? 百度百科上 Android的介绍 一.Windows环境下在线搭建Android环境. 1. 下载 Android开发工具. JD ...
- libc.so.6被删后导致系统无法使用的原因及解决方法
记一次升级glibc库发生的错误 今天给glibc库升级,发生了一件让我吓出一声汗的事情,我把动态库中的libc.so.6给删了,瞬间所有的非系统命令都无法使用,使用就报错 当时就吓尿了,生产环境被我 ...
- [转]Ionic Datepicker
本文转自:https://market.ionic.io/plugins/ionicdatepicker ##Introduction: This is an ionic-datepicker bow ...
- 《TCP/IP详解 卷一》读书笔记-----广播&多播&IGMP
1.广播和多播都只适用于UDP,因为TCP是面向连接的,需要将两台主机的两个进程绑定在一起,即IP地址和端口对 2.通常,网卡能看到网络中的每一个数据帧,但是往往它只接受目的地址与自己MAC地址相同的 ...
- LeetCode 1 Two Sum 解题报告
LeetCode 1 Two Sum 解题报告 偶然间听见leetcode这个平台,这里面题量也不是很多200多题,打算平时有空在研究生期间就刷完,跟跟多的练习算法的人进行交流思想,一定的ACM算法积 ...
- 如何实现ZBrush 4R7中按钮颜色的自定义
本文详细讲解在ZBrush® 4R7中如何改变按钮颜色. Zbrush默认的开关按钮颜色为橙黄色,若您不喜欢当前颜色,可以通过“Icolors”功能按钮下的各命令来更改界面开关颜色及透明度 ...
- Codeforces Round #267 Div.2 D Fedor and Essay -- 强连通 DFS
题意:给一篇文章,再给一些单词替换关系a b,表示单词a可被b替换,可多次替换,问最后把这篇文章替换后(或不替换)能达到的最小的'r'的个数是多少,如果'r'的个数相等,那么尽量是文章最短. 解法:易 ...
- POJ 1125 Stockbroker Grapevine
Stockbroker Grapevine Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 33141 Accepted: ...
- PHP5.5 + IIS + Win7的配置
PHP运行环境主要分windows环境和linux环境,本文主要简单介绍下我自己的配置,其他就不一一说明了. windows环境 方式一:.Apache的安装配置:2.MySQL的安装配置,可安装ph ...
- 【转】【C#】【Thread】Interlocked 轻量级锁
为什么说它是轻量级呢?因为它仅对整形数据(即int类型,long也行)进行同步. 具体使用如下表: Interlocked.Increment(ref value) 数值加一(原子性操作) Inter ...