1

我在我的项目中使用 Linq-to-Entity (EF 4.0)。我想在我的代码中使用事务。我发现了两种在我的代码中使用事务的方法。System.Transaction 和 System.Data.Common.DbTransaction 有什么区别?哪个性能更好?

第一的:

            using (testEntities ent = new testEntities())
        {
            ent.Connection.Open();
            using (System.Data.Common.DbTransaction transaction = ent.Connection.BeginTransaction())
            {
                try
                {
                    ...

                    int er1 = ent.SaveChanges();
                    if (er1 > 0)
                        success = true;
                    else
                        success = false;

                    ...

                    int er2 = ent.SaveChanges();
                    if (er2 > 0)
                        success = true;
                    else
                        success = false;
                }
                catch
                {
                    success = false;
                }

                success = false;

                if (success)
                    transaction.Commit();
                else
                    transaction.Rollback();
            }
        }

第二:

            using (testEntities ent = new testEntities())
        {
            ent.Connection.Open();
            using (TransactionScope tscope= new TransactionScope())
            {

                ...

                int er1 = ent.SaveChanges();

                ...

                int er2 = ent.SaveChanges();


                tscope.Complete();

            }
        }
4

1 回答 1

4

来自 msdn

System.Transactions 命名空间包含允许您编写自己的事务应用程序和资源管理器的类。具体来说,您可以创建并参与一个或多个参与者的事务(本地或分布式)。

DbTransactions 仅用于数据库事务。TransactionScope 为您提供自动事务注册能力。它将为您注册或创建新交易。这可以包括数据库或分布式事务。

检查msdn以获取更多信息。

于 2012-09-10T16:14:26.077 回答