Dapper.Net和DataReader

时间:2014-07-09 13:28:42

标签: sql .net exception dapper dapper-extensions

我和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 个答案:

答案 0 :(得分:0)

如果模型和数据库模式不匹配并且在Dapper中引发异常,则会发生这种情况。

如果您真的想要了解这一点,最好的方法是在项目中包含dapper源并进行调试。