Entity Framework 第二篇 事务
Entity Framework 事务
结合第一篇的代码
public class BaseRepository : ITransaction, IDisposable
{
private XFDbContext dbContext;
之所以将数据上下文抽离出来,而不是每次使用都using,这样做就是为了在调用的时候,满足是同一个上下文,因为同一个上下文是事务性质的,在提交之前,如果一旦有异常,所有操作都会回滚
public bool Del(string id)
{
bool result = false;
BaseRepository respository = new BaseRepository();
respository.BeginTransaction();
try
{
//1.删除关系
string sqlStr_d = "delete from S_UserRoles where UserID=@UserIDd";
SqlParameter[] paras_d = {
new SqlParameter("@UserIDd", id),
};
respository.ExecuteSqlCommand(sqlStr_d, paras_d);
//2.删除主表
respository.Delete<S_Users>(m => m.UserID == id);
result = respository.Commit() > ;
}
catch (Exception ex)
{
respository.Rollback();
}
finally
{
respository.Dispose();
}
return result;
}
思路是什么呢?
BeginTransaction()
更改IsTransaction属性,表示现在开始是一个实务操作,这样每一个单元操作都不会做提交
Commit()
做最后的提交,会判断一下存不存在DbContextTransaction,如果存在一并提交
Rollback()
也会判断一下存不存在DbContextTransaction,如果存在一并回滚
public void BeginTransaction()
{ if (dbContext.Database.CurrentTransaction == null) { dbContext.Database.BeginTransaction(); }
this.IsTransaction = true;
}
public int Commit()
{
int reault = dbContext.SaveChanges();
this.IsTransaction = false;
DbContextTransaction transaction = dbContext.Database.CurrentTransaction;
if (transaction != null)
{
transaction.Commit();
transaction.Dispose();
reault += ;
}
return reault;
}
public void Rollback()
{
this.IsTransaction = false;
DbContextTransaction transaction = dbContext.Database.CurrentTransaction;
if (transaction != null)
{
transaction.Rollback();
transaction.Dispose();
}
}
public bool IsTransaction
{
get;
private set;
}
Entity Framework 第二篇 事务的更多相关文章
- 在Entity Framework中使用事务
继续为想使用Entity Framework的朋友在前面探路,分享的东西虽然技术含量不高,但都是经过实践检验的. 在Entity Framework中使用事务很简单,将操作放在TransactionS ...
- LinqToSql和ASP.NET Entity FrameWork 中使用事务
ASP.NET Entity FrameWork中: int flag = -1; if (this.URPmanagementEntities1.Connection.State != System ...
- (Entity framework 应用篇)把权限判断封装在数据库访问层
这里,我只是以一个例子,说一下简单权限控制,通过这个例子,大家可以设计庞大的权限管理层,把权限控制封装到数据库访问层,这样程序员就不用再写权限判断的代码了 首先,先看看我数据库DBContext的定义 ...
- Entity Framework 第九篇 关于自增列的事务处理
如果一个表带有自增列的,那么在事务处理的过程中,如果抑制了提交,自增的序号就不会得到,如果我们需要得到那怎么办呢?可以临时提交,但是既然提交了就要考虑到事务回滚,否则无法满足数据的一致性 public ...
- Entity Framework 4 数据事务操作
利用数据库链接进行事务操作 var db = ConnectionHelper.GetConn(ConnectionType.Write);//获取上下文 var conn = db.Connecti ...
- Entity Framework 第一篇
这段时间研究了orm框架EF 写一写研究的历程和心得 先贴上核心代码 public interface ITransaction { bool IsTransaction { get;} void B ...
- Entity Framework 的事务
一个db.SaveChanges()相当于一个事务,多个db.SaveChanges()保证操作完整性则需要使用事务 在Entity Framework 中使用事务,事务只会对数据库操作进行回滚,不会 ...
- Entity Framework的启动速度优化
最近开发的服务放到IIS上寄宿之后,遇到一些现象,比如刚部署之后,第一次启动很慢:程序放置一会儿,再次请求也会比较慢.比如第一个问题,可以解释为初次请求某一个服务的时候,需要把程序集加载到内存中可能比 ...
- [Programming Entity Framework] 第3章 查询实体数据模型(EDM)(一)
http://www.cnblogs.com/sansi/archive/2012/10/18/2729337.html Programming Entity Framework 第二版翻译索引 你可 ...
随机推荐
- PNG图片去除额外透明区域
bitmapdata.getColorBoundsRect(0xFF000000,0x00000000,false) http://www.cnblogs.com/shinings/archive/2 ...
- 转:python webdriver API 之调用 JavaScript
当 webdriver 遇到没法完成的操作时,笔者可以考虑借用 JavaScript 来完成,比下下面的例子,通过 JavaScript 来隐藏页面上的元素.除了完成 webdriver 无法完成的操 ...
- Linux 系统结构
Linux的系统结构一般由四部分组成 内核 1)内核 操作系统的核心,具有最基本的功能:内存管理.进程管理.设备驱动管理.文件系统管理,网络管理 内核版本(kernel)查看的三种方法 cat /pr ...
- paper 10:支持向量机系列七:Kernel II —— 核方法的一些理论补充,关于 Reproducing Kernel Hilbert Space 和 Representer Theorem 的简介。
在之前我们介绍了如何用 Kernel 方法来将线性 SVM 进行推广以使其能够处理非线性的情况,那里用到的方法就是通过一个非线性映射 ϕ(⋅) 将原始数据进行映射,使得原来的非线性问题在映射之后的空间 ...
- libsvm
代码文件主要针对Matlab进行说明,但个人仍觉得讲解的支持向量机内容非常棒,可以做为理解这一统计方法的辅助资料; LibSVM是台湾林智仁(Chih-Jen Lin)教授2001年开发的一套支持向量 ...
- linux添加字体的过程
只说一下过程, 至于具体的原理还没搞明白. 1. 首先你要有字体文件,ttf或者ttc格式的均可以 我们可以从windows的 C:\WINDOWS\Fonts\ 这个目录下的字体文件复制出来,例如我 ...
- C++之: CDib类
头文件Cdib.h 源文件Cdib.cpp
- Ceph的状态错误
使用命令检查ceph集群的监控状态,得到 [root@node1 ~]# ceph -s cluster c4898b1c-7ac1-406d-bb5d-d3c7980de438 health HEA ...
- struts2 笔记02 文件上传、文件下载、类型转换器、国际化的支持
Struts2的上传 1. Struts2默认采用了apache commons-fileupload 2. Struts2支持三种类型的上传组件 3. 需要引入commons-fileupload ...
- ubuntu支持shh远程连接记录
打开终端输入sudo apt-get update更新软件库 在输入sudo apt-get install openssh-server下载ssh sudo /etc/init.d/ssh rest ...