У меня есть этот код в методе
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
.
Как мне решить эту проблему?