gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 15:19:17 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com