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 возникает исключение.
Если вы действительно хотите в это разобраться, лучше всего включить в ваш проект более привлекательный источник и отладить его.