处理从实体框架中的存储过程返回的多个结果集

问题描述 投票:0回答:2

我有一个像这样的存储过程:

CREATE STORED PROCEDURE Test1
AS
BEGIN
SELECT * FROM Table1
SELECT * FROM Table2
END

现在我想在EF中使用这个程序。怎么样?!我可以使用从 EF 中的过程返回的两个 SELECT 请求吗?!

注意:如果这个存储过程仅返回结果,我知道如何使用它

谢谢

entity-framework stored-procedures
2个回答
3
投票

这是你问题的答案

     using (var db = new EF_DEMOEntities())
    {
       var cmd = db.Database.Connection.CreateCommand();
       cmd.CommandText = "[dbo].[proc_getmorethanonetable]";

        try
        {
            db.Database.Connection.Open();
            using (var reader = cmd.ExecuteReader())
          {
                var orders = ((IObjectContextAdapter)db).ObjectContext.Translate<Order>(reader);
               GridView1.DataSource = orders.ToList();
                GridView1.DataBind();
                   reader.NextResult();
                 var items =  
         ((IObjectContextAdapter)db).ObjectContext.Translate<Item>(reader);
                 GridView2.DataSource = items.ToList();
                GridView2.DataBind();
                reader.NextResult();
                 var collect =  ((IObjectContextAdapter)db).ObjectContext.Translate<object>(reader);
         GridView3.DataSource = collect.ToList();
         GridView3.DataBind();

      }
     }
         finally
        {
           db.Database.Connection.Close();
     }
}

0
投票

EF5/EF6 支持 具有多个结果集的存储过程

EF-Core 有一个开放问题来实现此功能。

有一个使用 ADO.NET 的解决方法。

© www.soinside.com 2019 - 2024. All rights reserved.