簡體   English   中英

使用FromSql方法(Linq)的實體框架核心輸出參數在存儲過程中不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM