2

当我调用这样的存储过程时,我遇到了奇怪的问题TemplateContext

string query = "exec SearchRequest @recct = @TotalCount OUTPUT" + parametersString.ToString();
var requestDtos = ctx.Database.SqlQuery<RequestDto>(query, totalCount).ToList();

当数据库根据我传递给存储过程的参数requestDtos实际返回正确的行数时,这有时会得到 30 个对象,有时会得到 60 个对象,但奇怪的是,在映射到对象时记录会重复。PageSize

因此,如果页面大小为 10,我将获得 30 或 60 个重复的对象,而不是获得 10 个对象。

知道这种奇怪的行为吗?

4

1 回答 1

0

您没有正确传递参数。我建议你使用下面的代码:

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;
于 2016-06-15T09:38:22.813 回答