c# - 创建 TransactionScope 并创建 Context order

标签 c# entity-framework c#-4.0 entity transactionscope

这些代码有什么区别:

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/

相关文章:

c# - 以编程方式查找 .resx 文件中是否存在替代翻译

c# - mysql选择具有一定条件的值

c# - SQLite.Net-PCL 连接找不到数据库

entity-framework - 如何在 Azure 上回滚 EF 迁移

c# - 将文本文件中的数据解析为数组

javascript - 从 fiddler 或 Swift 而不是 js 调用 signalr

c# - 在 Entity Framework 中将数据从一个提供者实时传输到另一个提供者

c# - .Distinct() 调用不过滤

c# - 将已编辑的 XML 文档保存到任何位置?

c#-4.0 - 尝试使用 Oracle Data Access ODP.NET 11.2 执行 ExecuteReader() 时出现 InvalidOperationException