c# - 记录在映射到 TemplateContext.Database.SqlQuery 函数中的对象时重复

标签 c# asp.net linq ado.net template-context

当我使用 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/

相关文章:

c# - C# MongoDB 2.0 中多个字段的项目

c# - 用C#比较两个ip

asp.net - FireFox坐在 "Transferring data from..."或 "Read...."上

c# - 将 ComboBox 的 SelectedItem 属性与 Linq 匿名类型一起使用

c# - 使用LINQ从类属性计算百分比的更好方法

c# - 将派生属性包含到实体查询的 linq 中

c# - 使用 Mono 针对 .NET Framework 4.0 进行定位和编译

c# - 如何使用 HTML Agility Pack 从网站检索所有图像?

c# - 当鼠标悬停在 'Edit' 链接上时,Gridview 中的 CSS Frozen Header 会向上滚动

asp.net - <asp :Content> error mean in asp.net Master page?是什么