• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

当前位置: > 编程与数据库 > net编程 >

LINQ那些事儿(3)- 事务和并发冲突处理(4)

来源: www.dedecms8.com 编辑:织梦吧 时间:2012-06-27点击:

DataContext.SubmitChanges可能涉及多个entity object的更新,在实际应用中,一起提交若干记录的更新有两种情况:

1) 需要事务完整约束的,如销售++,库存--

2) 不需要事务约束的。如程序运行时把产生的日志放到cache里,由专门负责日志持久化的Thread每隔一段时间把Cache里的多条日志提交保存。

DataContext.SubmitChanges(ConflictMode)可通过指定ConflictMode来满足上面的两种情况:

ConflictMode取值 说明
FailOnFirstConflict 默认参数,一旦发生ChangeConflictException,停止SubmitChanges操作,回滚所有SubmitChanges执行的操作。满足情况1)
ContinueOnConflict 当发生ChangeConflictException时,继续执行下一个对象的更新操作,直至所有对象都更新完毕,返回所有发生的ChangeConflictException。满足情况2)

 

除了让DataContext.SubmitChanges隐式创建事务外,我们也可以显式使用事务来控制更新操作。下面两段代码分别示例了显示事务的使用:

IDbTransaction version:

01 var context = GenerateContext();
02 Customer customerA = new Customer { CustomerID = "K.K" };
03 Customer customerB = new Customer { CustomerID = "K.K" };
04 context.Customers.InsertOnSubmit(customerA);
05 context.Customers.InsertOnSubmit(customerB);
06 context.Transaction = context.Connection.BeginTransaction();
07
08 try
09 {
10     context.SubmitChanges();
11     context.Transaction.Commit();

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 1978130638@qq.com ,  QQ