Dapper.Net и DataReader

У меня очень странная ошибка с dapper:

с этой командой уже есть открытый DataReader, который должен быть закрыт первым

Но я не использую DataReader! Я просто вызываю запрос select на моем серверном приложении и получаю первый результат:

    //How I run query:
    public static T SelectVersion(IDbTransaction transaction = null)
    {
        return DbHelper.DataBase.Connection.Query<T>("SELECT * FROM [VersionLog] WHERE [Version] = (SELECT MAX([Version]) FROM [VersionLog])", null, transaction, commandTimeout: DbHelper.CommandTimeout).FirstOrDefault(); 
    }

    //And how I call this method:
    public Response Upload(CommitRequest message) //It is calling on server from client
    {
            //Prepearing data from CommitRequest

            using (var tr = DbHelper.DataBase.Connection.BeginTransaction(IsolationLevel.Serializable))
            {
                int v = SelectQueries<VersionLog>.SelectVersion(tr) != null ? SelectQueries<VersionLog>.SelectVersion(tr).Version : 0; //Call my query here
                int newVersion = v + 1; //update version

                //Saving changes from CommitRequest to db
                //Updated version saving to base too, maybe it is problem?

                return new Response
                {
                    Message = String.Empty,
                    ServerBaseVersion = versionLog.Version, 
                };
            }
        }
    }

И самое печальное, что это исключение появилось в случайное время, я думаю, что проблема в одновременном доступе к серверу от двух клиентов.

Пожалуйста помоги.

1 ответ

Это иногда случается, если модель и схема базы данных не совпадают, и внутри Dapper возникает исключение.

Если вы действительно хотите в это разобраться, лучше всего включить в ваш проект более привлекательный источник и отладить его.

Другие вопросы по тегам