簡體   English   中英

如何在 EF4 中調用存儲過程

[英]How to call stored procedure in EF4

我正在嘗試在 Entity Framework 4 應用程序中調用存儲過程,但到目前為止得到了奇怪的結果。 存儲過程接受INOUT參數,並返回結果集。 我映射了存儲過程並創建了一個復雜類型,它表示返回的結果集中的一行。 我稱之為

using (MyObjectContext ctx = new MyObjectContext())
{
     ObjectParameter out1 = new ObjectParameter("out1", typeof(String));
     ObjectParameter out2 = new ObjectParameter("out2", typeof(String));     
     var res = ctx.my_proc(1,2, out1,out2);
}

問題是,除非我調用res.ToList() (或通過res枚舉,或調用任何訪問底層集合的方法),否則out1out2的值是null
我如何解決它?
謝謝

你無法修復它。 這是一個問題。 結果集必須在 output 參數可訪問之前實現或丟棄,因為這些 output 參數在最后一個結果集中傳輸,因此內部數據讀取器必須首先讀取返回的結果集和主數據,然后訪問下一個結果集以讀取 Z78E6221F6393D14CE6DZ 參數。 順便提一句。 如果您直接使用 ADO.NET 也是一樣 - 這不是實體框架本身的功能,而是 SQL 服務器如何返回 output 參數的方式以及 DataReader 如何按順序使用結果集的方式。

當你調用返回行表的過程或查詢時,當用戶調用 ToList 或枚舉返回值時,EF 會真正執行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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