这些代码有什么区别:
using (TransactionScope tran = new TransactionScope ())
{
using (Entities ent = new Entities())
{
和
using (Entities ent = new Entities())
{
using (TransactionScope tran = new TransactionScope ())
{
行顺序重要吗?
谢谢
最佳答案
在这种情况下,这并不重要,因为Entities
看起来像模型/数据类,它不能/不需要加入事务,所以你可以有任何订单,它不会创造差异。现在,如果 Entities
操作中存在任何问题,读取/DML 则事务也会中止,假设该操作发生在环境事务上下文中,尽管类/对象像 IDBConnection
无论如何都会自动登记到事务中(前提是未设置为 false),但是即使 Connection 是在事务上下文之外创建的,也不会自动登记,需要显式登记事务上下文
In Short
对于您当前的代码,直到您处理需要事务登记的对象(例如 IDBConnection
)为止,这并不重要。 在两个代码片段中,虽然我更喜欢第一个,其中环境事务全部包含需要自动登记的所有对象,但我们不会偶然留下任何对象。
Important Difference
您可能需要小心是否要访问事务上下文之外的实体,因为这在选项 1 中不可能,但在选项 2 中不会成为问题
关于c# - 创建 TransactionScope 并创建 Context order,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50189667/