![](/img/trans.png)
[英]How to call a stored Procedure for SELECT in EF4 to populate an EntityDataSource
[英]How to call stored procedure in EF4
我正在嘗試在 Entity Framework 4 應用程序中調用存儲過程,但到目前為止得到了奇怪的結果。 存儲過程接受IN
和OUT
參數,並返回結果集。 我映射了存儲過程並創建了一個復雜類型,它表示返回的結果集中的一行。 我稱之為
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
枚舉,或調用任何訪問底層集合的方法),否則out1
和out2
的值是null
。
我如何解決它?
謝謝
你無法修復它。 這是一個問題。 結果集必須在 output 參數可訪問之前實現或丟棄,因為這些 output 參數在最后一個結果集中傳輸,因此內部數據讀取器必須首先讀取返回的結果集和主數據,然后訪問下一個結果集以讀取 Z78E6221F6393D14CE6DZ 參數。 順便提一句。 如果您直接使用 ADO.NET 也是一樣 - 這不是實體框架本身的功能,而是 SQL 服務器如何返回 output 參數的方式以及 DataReader 如何按順序使用結果集的方式。
當你調用返回行表的過程或查詢時,當用戶調用 ToList 或枚舉返回值時,EF 會真正執行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.