繁体   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