![](/img/trans.png)
[英]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.