.NET/.NET核心和SQL Server连接不匹配问题
问题描述:
我正在开发每秒执行〜30个SQL查询的C#应用程序......我有多个线程可以做到这一点。我的问题是,当我试图用SELECT ....
查询sql服务器时,它返回不同的结果。.NET/.NET核心和SQL Server连接不匹配问题
例子: 如果运行在不同的线程我得到相同的时间都SELECT * FROM Users
和SELECT * FROM Jobs
样应答:
SELECT * FROM Users
- >Job colums with Job values
SELECT * FROM Jobs
- >User colums with User values
我使用小巧精致的像这个:
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标识, System.Int32用户ID,System.Decimal工资, System.DateTime的UpdatedAt) 需要SampleApp.User物化
我的应用程序是从这个复杂的,但是这应该是好例子非常不同......
答
必须使用不同的阅读器的SQL或SQL COMM并为正确的解决方案。 尝试一下;
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;
也许看看这个:https://stackoverflow.com/questions/21917836/connection-pool-one-process-many-threads –
在应用程序日志中的例外,是不是错的结果集从查询 - 它是关于能够在运行时实例化'new'匿名类型。 –
而不是在您的选择查询中使用JobId,请选择*,因为您尝试使用您的用户类型实现,但您选择JobId –