Почему я получаю эту ошибку «System.InvalidOperationException», используя Entity Framework и ASP.NET Core? - PullRequest
1 голос
/ 30 сентября 2019

У меня есть этот код в методе

string _errorMessage = string.Empty;

SqlParameter[] @params = {
    new System.Data.SqlClient.SqlParameter("@id", entity.Id),
    new System.Data.SqlClient.SqlParameter("@userId", _user.SecUserId),
    new System.Data.SqlClient.SqlParameter("@lockProcess", "Bulk Receipting For Employer"),
    new System.Data.SqlClient.SqlParameter("@errorMessage", SqlDbType.VarChar, 200) {Direction = ParameterDirection.Output}
};

var reader = _context.Database.ExecuteSqlCommand("usp_LockAndReadCase @id, @userId, @lockProcess, @errorMessage OUTPUT", @params);
_errorMessage = @params[3].Value.ToString();
return _errorMessage;

В одной конкретной области я вызываю этот метод в цикле для передачи нескольких идентификаторов. Когда он вызывается последовательно, я получаю сообщение об ошибке:

System.InvalidOperationException: «Уже есть открытый DataReader, связанный с этой командой, который должен быть закрыт первым».

Поскольку я использую Entity Framework и ASP.NET Core, я использую ExecuteSqlCommand и мне не нужно создавать SqlConnection или DataReader.

Как мне решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...