Исключение в TransactionScope - PullRequest
       26

Исключение в TransactionScope

2 голосов
/ 05 августа 2011

Я получаю следующее исключение, когда запускаю следующий код в строке

EntityScope<TQFormContext>.CurrentObjectContext.SaveChanges();

"Транзакция, связанная с текущим соединением, завершена, но не была удалена. Транзакция должна быть удалена, прежде чем соединение можно будет использовать для выполнения операторов SQL."

[TestMethod()]
    public void TransactionTest()
    {
        using (TransactionScope tc = new TransactionScope())
        {

            var u1 =  EntityScope<TQFormContext>.CurrentObjectContext.ASUsers.FirstOrDefault(u => u.UserID == 1);

            var u2 = PersistenceManager.GetById<TQ.Business.PO.Administration.UserPO>(2);
            u1.MiddleInitial = "1";
            u2.MiddleInitial = "1";

            using (SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
            {
                SqlCommand sqlComm = new SqlCommand("Update asusers set middleinitial='1' where userid=3", sqlConn);
                sqlConn.Open();
                sqlComm.ExecuteNonQuery();
            }

            PersistenceManager.SaveOrUpdate(u2);
            EntityScope<TQFormContext>.CurrentObjectContext.SaveChanges();

         //   throw new Exception("Blah");
            tc.Complete();
        }
    }

1 Ответ

0 голосов
/ 05 августа 2011

Требуется опция «Область действия по умолчанию», которая заставит ваш новый TransactionScope присоединиться к существующему окружающему транзакции. Поэтому я думаю, что если вы передадите в свой конструктор параметр RequNew Transaction Scope, это должно сработать.

...