Ошибка asp.Net TransactionScope - PullRequest
       4

Ошибка asp.Net TransactionScope

1 голос
/ 12 декабря 2011

Вот моя кодировка

    using (TransactionScope scope = new TransactionScope())
    {
        using (DataAccess.Document Access = new DataAccess.Document())
        {
            if (toSave.Document.Rows.Count > 0)
            {
                 Access.SaveDocument(docToSave);
            }
            if (toUpdate.Document.Rows.Count > 0)
            {
                 Access.UpdateEachDocument(docToUpdate);
            }
        }
        scope.Complete();
    }

вот ошибка

ExecuteNonQuery требует открытого и доступного соединения.Текущее состояние соединения закрыто.

Документ - это класс, и там есть методы сохранения и обновления документов.

If I comment the transactionScope, I get no errors.

Что не так?

1 Ответ

0 голосов
/ 19 апреля 2012

Ну, здесь ясно сказано, что здесь не так. Вы должны поместить свой уровень доступа снаружи или зафиксировать вызов внутри, чтобы использовать соединение. Когда он пытается зафиксировать trans в вашем коде, он удаляется перед тем, как туда попасть.

 using (TransactionScope scope = new TransactionScope())
{
    using (DataAccess.Document Access = new DataAccess.Document())
    {
        if (toSave.Document.Rows.Count > 0)
        {
             Access.SaveDocument(docToSave);
        }
        if (toUpdate.Document.Rows.Count > 0)
        {
             Access.UpdateEachDocument(docToUpdate);
        }
      scope.Complete();       
   }

}
...