簡體   English   中英

使用ObjectContext從存儲過程中檢索多個結果集

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

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