问题
Here is my coding
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();
}
here is the error
ExecuteNonQuery requires an open and available Connection. The connection's current state is closed.
Document is a class and there are save and update document methods there.
If I comment the transactionScope, I get no errors.
What's wrong?
回答1:
Well, it is clearly saying what is wrong here. You need to put your access layer outside or commit call inside to use connection. When it is trying to commit trans in your code, it is disposed before getting there.
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();
}
}
来源:https://stackoverflow.com/questions/8470512/asp-net-transactionscope-error