2011-12-27 31 views
0

每当我需要在L2S工作中执行多个查询时,我都会使用TransactionScope显式创建一个事务。今天,我的同事告诉我,他从来没有手动创建交易,因为L2S在SubmitChanges级别执行。我在说,所以我已经做了一些示例代码来测试它。正如我所了解的那样 - 他是对的。 我的问题是,从linq到sql的开头是否可用,或者是在某些.net版本/服务包中添加的? 在网络中,有很多关于如何在L2S上使用TransactionScope的示例,所以我不确定这些人中的每一个人都可能会错过它?linq to sql:我需要显式创建一个事务吗?

+0

自早期beta版以来,L2S已创建SubmitChanges事务。这就是当发生异常时能够回滚操作的能力(参见'SubmitChanges(ConflictMode.ContinueOnConflict)') – 2011-12-27 21:26:30

回答

0

显式TransactionScopes确实有价值,如果你想包装多个查询和多个调用SaveChanges在一个单一的交易...但如果你正在保存一个对象图(这将生成多个插入/更新语句到数据库),当调用SaveChanges时,所有这些语句将自动包装在一个事务中。

1

只要您进行所有更改,然后一次拨打SubmitChanges()即可自动创建交易。

您需要担心TransactionScope的唯一时间是多次拨打SubmitChanges()或者您需要一个可在多个上下文中工作的事务。