Linq to sql:事务处理
来源:互联网 发布:一城一名店网络平台 编辑:程序博客网 时间:2024/06/17 08:51
Linq to sql 在提交更新的时候默认会创建事务,一部分修改发生错误的话其它修改也不
会生效:
ctx.Customers.Add(new Customer { CustomerID = "abcdf", CompanyName =
"zhuye" });
ctx.Customers.Add(new Customer { CustomerID = "abcde", CompanyName =
"zhuye" });
ctx.SubmitChanges();
假设数据库中已经存在顾客 ID 为“abcde”的记录,那么第二次插入操作失败将会导致第
一次的插入操作失效。执行程序后会得到一个异常,查询数据库发现“abcdf”这个顾客也没
有插入到数据库中。
如果每次更新后直接提交修改,那么我们可以使用下面的方式做事务:
if (ctx.Connection != null) ctx.Connection.Open();
DbTransaction tran = ctx.Connection.BeginTransaction();
ctx.Transaction = tran;
try
{
CreateCustomer(new Customer { CustomerID = "abcdf", CompanyName =
"zhuye" });
CreateCustomer(new Customer { CustomerID = "abcde", CompanyName =
"zhuye" });
tran.Commit();
}
catch
{
tran.Rollback();
}
private void CreateCustomer(Customer c)
{
ctx.Customers.Add(c);
ctx.SubmitChanges();
}
运行程序后发现增加顾客 abcdf 的操作并没有成功。或者,我们还可以通过
TransactionScope 实现事务:
using (TransactionScope scope = new TransactionScope())
{
CreateCustomer(new Customer { CustomerID = "abcdf", CompanyName =
"zhuye" });
CreateCustomer(new Customer { CustomerID = "abcde", CompanyName =
"zhuye" });
scope.Complete();
会生效:
ctx.Customers.Add(new Customer { CustomerID = "abcdf", CompanyName =
"zhuye" });
ctx.Customers.Add(new Customer { CustomerID = "abcde", CompanyName =
"zhuye" });
ctx.SubmitChanges();
假设数据库中已经存在顾客 ID 为“abcde”的记录,那么第二次插入操作失败将会导致第
一次的插入操作失效。执行程序后会得到一个异常,查询数据库发现“abcdf”这个顾客也没
有插入到数据库中。
如果每次更新后直接提交修改,那么我们可以使用下面的方式做事务:
if (ctx.Connection != null) ctx.Connection.Open();
DbTransaction tran = ctx.Connection.BeginTransaction();
ctx.Transaction = tran;
try
{
CreateCustomer(new Customer { CustomerID = "abcdf", CompanyName =
"zhuye" });
CreateCustomer(new Customer { CustomerID = "abcde", CompanyName =
"zhuye" });
tran.Commit();
}
catch
{
tran.Rollback();
}
private void CreateCustomer(Customer c)
{
ctx.Customers.Add(c);
ctx.SubmitChanges();
}
运行程序后发现增加顾客 abcdf 的操作并没有成功。或者,我们还可以通过
TransactionScope 实现事务:
using (TransactionScope scope = new TransactionScope())
{
CreateCustomer(new Customer { CustomerID = "abcdf", CompanyName =
"zhuye" });
CreateCustomer(new Customer { CustomerID = "abcde", CompanyName =
"zhuye" });
scope.Complete();
}
- Linq to sql:事务处理
- Linq to Sql : 三种事务处理方式
- Linq to Sql : 三种事务处理方式
- Linq to Sql:三种事务处理方式
- DLINQ(LINQ to SQL)之事务处理和并发处理
- DLINQ(LINQ to SQL)之事务处理和并发处理
- DLINQ(LINQ to SQL)之事务处理和并发处理
- linq,linq to sql
- 步步为营VS 2008 + .NET 3.5(12) - DLINQ(LINQ to SQL)之事务处理和并发处理
- 步步为营VS 2008 + .NET 3.5(12) - DLINQ(LINQ to SQL)之事务处理和并发处理
- Linq初探--Linq to SQL
- LINQ to SQL 学习
- 什么是Linq to sql
- 使用LINQ to SQL
- 深入LINQ to SQL
- Linq To Sql注意事项
- Linq to SQL:基础知识
- LINQ to SQL实例
- Mahout0.6-VectorDumper bug修复
- linux下各文件的作用
- 根据wsdl文件生成java代码
- POJ 2299 Ultra-QuickSort
- 线程属性pthread_attr_t简介
- Linq to sql:事务处理
- Html5 学习系列(二)HTML5新增结构标签
- cocos2d-x的版本更换和cocos2d-x2.1.4的安装
- javascript tab切换
- 【找规律】HDU 4662——MU Puzzle
- UITableView背景,边框线设置
- XLSTransformer生成excel文件
- 忽然之间
- Android 中 Service 全面解析与使用