[英]Generic approach to dealing with multiple result sets from EF stored procedure
[英]Retrieve multiple result sets from a stored procedure using ObjectContext
我有一個存儲過程:
CREATE PROCEDURE uspGetData
...Parameter
AS
SELECT 'hello' AS 'HelloColumn'
GO
然后我使用ObjectContext
執行存儲過程
((IOjbectContextAdapter)this).ObjectContext.ExecuteFunction<HelloClass>("uspGetData", .... Parameter);
HelloClass
只是一個數據類
public class HelloClass
{
public string HelloColumn { ... }
}
我得到了我需要的完美結果
但現在我需要像這樣在存儲過程中添加另一個SELECT
CREATE PROCEDURE uspGetData
...Parameter
AS
SELECT 'hello' AS 'HelloColumn'
SELECT 'byebye' AS 'ByeColumn'
GO
當然,在實際環境中會更復雜,並且不僅要SELECT something
現在我無法獲得所需的結果,
我試圖在HelloClass
上做基類
public class HelloClass : ByeClass
{ ... }
我也嘗試將2個對象集插入到ObjectContext
命令中
((IOjbectContextAdapter)this).ObjectContext.ExecuteFunction<HelloClass,ByeClass>...
無論如何,要從存儲過程中獲取兩個結果集嗎?
是的,有辦法。
using (var db = new YourContext())
{
var cmd = db.Database.Connection.CreateCommand();
cmd.CommandText = "YourStoredProcedure";
db.Database.Connection.Open();
var reader = cmd.ExecuteReader();
ObjectResult<HelloClass> table1 = ((IObjectContextAdapter)db).ObjectContext.Translate<HelloClass>(reader, "HelloClass", MergeOption.AppendOnly);
reader.NextResult();
ObjectResult<HelloClass2> table2 = ((IObjectContextAdapter)db).ObjectContext.Translate<HelloClass2>(reader, "HelloClass2", MergeOption.AppendOnly);
}
有關更多信息,請檢查以下內容: https : //msdn.microsoft.com/zh-cn/data/jj691402.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.