简体   繁体   English

使用FromSql方法(Linq)的实体框架核心输出参数在存储过程中不起作用

[英]Entity framework core Output parameter not working in store procedure using FromSql method (Linq)

I am trying to get output value from the dbcontext using the method FromSql(...) . 我正在尝试使用FromSql(...)方法从dbcontext获取输出值。

If i execute it on SSMS, it works but not working in EF core. 如果我在SSMS上执行它,则可以工作,但不能在EF core中工作。

My SP param: 我的SP参数:

  @totalItems VARCHAR(MAX) OUTPUT 

I've removed other params for readable and point out the issue. 我删除了其他可读性参数并指出了问题。 The records are coming but the OUTPUT parameter is always null . 记录即将到来,但OUTPUT参数始终为null

Linq LINQ

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});

I don't' have access to your whole code, but nothing ever gets executed against your queryable source until you try to enumerate it. 我没有访问您的整个代码的权限,但是直到您尝试枚举它之前,都不会对您的可查询源执行任何操作。 So, probably it didn't run the Stored Procedure when you tried to get the OUTPUT. 因此,当您尝试获取输出时,它可能没有运行存储过程。

To force immediate query evaluation you can do it: 要强制立即查询评估,您可以执行以下操作:

 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

Here's how I'm doing it: 这是我的做法:

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();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用LINQ和Entity Framework获取存储过程输出参数 - Getting stored procedure output parameter with LINQ and Entity Framework 实体框架7 FromSql存储过程返回值 - Entity Framework 7 FromSql stored procedure return value 实体框架核心2中具有输出参数的Exec存储过程 - Exec Stored Procedure with output parameter in Entity Framework Core 2 实体框架核心FromSQL引发ArgumentNullException - Entity Framework core FromSQL throws ArgumentNullException Entity Framework Core FromSql 模拟测试用例 - Entity Framework Core FromSql mock test cases 使用带有 output 参数的实体框架调用 Oracle 存储过程? - Calling Oracle stored procedure using Entity Framework with output parameter? 调用 FromSql 在 IQueryable 上不起作用<tentity>从 Entity Framework 核心 2.2 迁移到 3.0 之后</tentity> - Calling FromSql Not working on IQueryable<TEntity> after migration from Entity Framework core 2.2 to 3.0 使用输出参数调用Entity Framework过程时出错 - Error calling Entity Framework procedure with output parameter 用干净的EF Core查询替换Entity Framework FromSql() - Replace Entity Framework FromSql() with clean EF Core query 实体框架:2.2 版本中将字符串参数传递给 FromSql 语句 - Entity Framework: Passing String Parameter to FromSql Statement in Version 2.2
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM