.NET / .NET Core和SQL Server连接不匹配问题

时间:2017-09-24 20:48:52

标签: c# sql-server tsql dapper

我正在开发C#应用程序,它每秒执行~30次sql查询...我有多个线程可以做到这一点。我的问题是,当我尝试使用SELECT ....查询sql server时,它会返回不同的结果。

实施例: 如果同时从不同的线程同时运行SELECT * FROM UsersSELECT * FROM Jobs,我会得到如下响应:

SELECT * FROM Users - > Job colums with Job values

SELECT * FROM Jobs - > User colums with User values

我正在使用这样的Dapper:

using (var connection = new SqlConnection(_msSqlProvider.ConnectionString))
            {
                connection.Open();
                return connection.Query<User>(
                    @"SELECT JobId 
                        FROM Users
                        WHERE Id = @userId
                        ORDER BY Id ASC",
                    new {userId});
            }

我的应用程序日志看起来像(即查询返回的不是用户模型数据):

  

获取用户工作时发生异常:无参数   默认构造函数或一个匹配的签名(System.Int32 Id,   System.Int32 UserId,System.Decimal Salary,System.DateTime UpdatedAt)   SampleApp.User实现

是必需的

我的应用程序与此非常不同且很复杂,但这应该是很好的例子......

解决方案: 如果有人在阅读这个问题时对解决方案感兴趣 - 启用MARS和连接池解决了我的问题......

1 个答案:

答案 0 :(得分:0)

必须使用不同的sql reader或sql命令才能获得正确的解决方案。 试试这个;

        double vId;
        SqlDataReader dr = null;
        if (db.OpenDR(ref dr, string.Format("select JobId from dbo.Users where Id={0}", vUSERID)))
        {
            if (dr.Read()) vId = dr["JobId"].dToDouble();
            dr.Close();
        }
        return vId;