[英]Getting stored procedure output parameter with LINQ and Entity Framework
[英]Entity framework core Output parameter not working in store procedure using FromSql method (Linq)
我正在嘗試使用FromSql(...)
方法從dbcontext
獲取輸出值。
如果我在SSMS上執行它,則可以工作,但不能在EF core中工作。
我的SP參數:
@totalItems VARCHAR(MAX) OUTPUT
我刪除了其他可讀性參數並指出了問題。 記錄即將到來,但OUTPUT
參數始終為null
。
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});
我沒有訪問您的整個代碼的權限,但是直到您嘗試枚舉它之前,都不會對您的可查詢源執行任何操作。 因此,當您嘗試獲取輸出時,它可能沒有運行存儲過程。
要強制立即查詢評估,您可以執行以下操作:
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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.