当我使用 TemplateContext
调用这样的存储过程时,我遇到了一个奇怪的问题
string query = "exec SearchRequest @recct = @TotalCount OUTPUT" + parametersString.ToString();
var requestDtos = ctx.Database.SqlQuery<RequestDto>(query, totalCount).ToList();
这有时会在 requestDtos
中得到 30 个对象,有时会得到 60 个对象,而数据库实际上根据我传递给存储过程的 PageSize
参数返回正确的行数,但奇怪的是,记录在映射到对象时会被复制。
因此,如果页面大小为 10,我得到的不是 10 个对象,而是 30 或 60 个对象。
知道这种奇怪的行为吗?
最佳答案
您没有正确传递参数。我建议你使用下面的代码:
var outParam = new SqlParameter();
outParam.ParameterName = "TotalCount";
outParam.SqlDbType = SqlDbType.Int;
outParam.ParameterDirection = ParameterDirection.Output;
var requestDtos = dbContext.Database.SqlQuery<MyType>("SearchRequest @recct, @TotalCount OUT",
new SqlParameter("recct", parametersString.ToString()),
outParam);
var result = requestDtos.ToList();
var totalCount = (int)outParam.Value;
关于c# - 记录在映射到 TemplateContext.Database.SqlQuery 函数中的对象时重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37830994/