gpt4 book ai didi

c# - Entity Framework 核心输出参数在使用 FromSql 方法 (Linq) 的存储过程中不起作用

转载 作者:行者123 更新时间:2023-12-05 05:19:59 25 4
gpt4 key购买 nike

我正在尝试使用 FromSql(...) 方法从 dbcontext 获取输出值。

如果我在 SSMS 上执行它,它可以工作但不能在 EF 核心中工作。

我的 SP 参数:

  @totalItems VARCHAR(MAX) OUTPUT 

为了便于阅读,我删除了其他参数并指出了问题。记录即将到来,但 OUTPUT 参数始终为 null

林克

IQeryable<T> = _context.Set<T>().FromSql("Sp_Todo @totalItems OUTPUT", // i also tried with OUT or without both Out/Output but no luck
new SqlParameter("@totalItems", SqlDbType.Varchar)
{ Direction = ParameterDirection.Output});

最佳答案

我无权访问您的全部代码,但在您尝试枚举它之前,不会针对您的可查询源执行任何操作。因此,当您尝试获取 OUTPUT 时,它可能没有运行存储过程。

要强制立即进行查询评估,您可以这样做:

 IQueryable<T> foo = _context.Set<T>().FromSql("Sp_Todo @totalItems OUTPUT", new SqlParameter("@totalItems", SqlDbType.Varchar) { Direction = ParameterDirection.Output });
//totalItems output still null
var bar = foo.ToList()
//totalItems output not null anymore

这是我的做法:

var _companyCode = new SqlParameter("CompanyCode", "HST");
var _sMsg = new SqlParameter("sMsg", "")
{
Direction = ParameterDirection.Output,
SqlDbType = SqlDbType.VarChar
};

var sql = "exec temp_get_company @CompanyCode, @sMsg OUTPUT";

var result = context.Set<Company>().FromSql(sql, _companyCode, _sMsg).ToList();

var yourOutput = _sMsg.Value.ToString();

关于c# - Entity Framework 核心输出参数在使用 FromSql 方法 (Linq) 的存储过程中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45343104/

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