每当我需要在L2S工作时执行多个查询时,我正在使用TransactionScope显式创建事务。今天我的同事告诉我,他从不手动创建交易,因为L2S在SubmitChanges级别执行。我很困惑,所以我做了一些示例代码来测试它。在我看来,我理解结果 - 他是对的。 我的问题是,它是从linq开始到sql还是在某些.net版本/服务包中添加? 在网上,有很多关于如何使用TransactionScope和L2S的样本,所以我不确定,这些人中的每一个都可能错过它吗?
答案 0 :(得分:1)
只要您完成所有更改,然后一次调用SubmitChanges()
,系统就会自动创建一个事务。
您需要担心TransactionScope
的唯一时间是您多次拨打SubmitChanges()
或需要跨多个情境的交易。
答案 1 :(得分:0)
如果要在单个事务中包装多个查询和多次调用SaveChanges,那么显式TransactionScope确实有价值......但是如果要保存一个对象图(它将为数据库生成多个插入/更新语句),所有调用SaveChanges时,这些语句将自动包装在一个Transaction中。