首页 新闻 会员 周边 捐助

linq to Sqlit中如何使用事务?

0
[待解决问题]

我有几千条数据要插入数据库,先用InsertAllOnSubmit(ls) 后SubmitChanges();

发现执行SubmitChanges()很费时。是不是没用事务的缘故?如何使用事务?

z1971的主页 z1971 | 初学一级 | 园豆:190
提问于:2011-10-29 16:38
< >
分享
所有回答(1)
0
Linq to Sql中支持三种事务处理模型
显式本地事务
显式可分布事务
隐式事务
显式本地事务:调用SubmitChanges时,如果DataContext的Transaction属性设置为事务,则会使用显式本地事务
使用显式本地事务:

PosDataContext db = new PosDataContext();

var tran = db.Connection.BeginTransaction();

db.Transaction=tran;

var temp=db.Product.Where(a => a.CategoryId == 1);

foreach (var x in temp)

{

    Console.WriteLine("商品的SerialNumber为:{0}", x.SerialNumber);

    x.SerialNumber = "N" + x.SerialNumber;

    Console.WriteLine("商品的新SerialNUmber为:{0}", x.SerialNumber);

}

Console.WriteLine("总的改变有:{0}", db.GetChangeSet());

db.SubmitChanges();

tran.Commit();

可分布事务:

PosDataContext db = new PosDataContext();

using (var ts = new TransactionScope())

{

    var tran = db.Connection.BeginTransaction();

    var temp = db.Product.Where(a => a.CategoryId == 1);

    foreach (var x in temp)

    {

        Console.WriteLine("商品的SerialNumber为:{0}", x.SerialNumber);

        x.SerialNumber = "N" + x.SerialNumber;

        Console.WriteLine("商品的新SerialNUmber为:{0}", x.SerialNumber);

    }

    Console.WriteLine("总的改变有:{0}", db.GetChangeSet());

    db.SubmitChanges();

    ts.Complete();

}

 

 
欢乐 | 园豆:332 (菜鸟二级) | 2011-11-22 17:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册