“Операция не допустима для состояния транзакции” ошибка и область транзакций

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
59
задан Avi Turner 2 May 2016 в 12:09
поделиться

2 ответа

После проведения некоторого исследования кажется, что у меня не может быть двух соединений, открытых той же базе данных с блоком TransactionScope. Я должен был изменить свой код для сходства с этим:

public void MyAddUpdateMethod()
{
    using (TransactionScope Scope = new TransactionScope(TransactionScopeOption.RequiresNew))
    {
        using(SQLServer Sql = new SQLServer(this.m_connstring))
        {
            //do my first add update statement            
        }

        //removed the method call from the first sql server using statement
        bool DoesRecordExist = this.SelectStatementCall(id)
    }
}

public bool SelectStatementCall(System.Guid id)
{
    using(SQLServer Sql = new SQLServer(this.m_connstring))
    {
        //create parameters
    }
}
53
ответ дан Michael Kniskern 24 November 2019 в 18:31
поделиться

Я встретился с этой ошибкой, когда моя Транзакция вкладывается в другом. Действительно ли возможно, что хранимая процедура объявляет свою собственную транзакцию или что функция вызова объявляет тот?

3
ответ дан Wyatt 24 November 2019 в 18:31
поделиться