C# C实体框架多结果

C# C实体框架多结果,c#,entity-framework,C#,Entity Framework,我试图使用存储过程中的多个结果,该存储过程返回3个结果集 第一个结果是一个名为“Message”的单列。 第二个结果集是一个表 第三个结果集是另一个表 我的主要问题是,关于如何从存储过程中接近多个结果集的每一个其他示例都意味着每个结果集都可以映射到一个实体,这与我的第一个结果不同 第一个结果: Select @Message 此查询返回的第二个结果集: Select SecondId, SecondName From T_Table1 Select ThirdId, ThirdName

我试图使用存储过程中的多个结果,该存储过程返回3个结果集

第一个结果是一个名为“Message”的单列。 第二个结果集是一个表 第三个结果集是另一个表 我的主要问题是,关于如何从存储过程中接近多个结果集的每一个其他示例都意味着每个结果集都可以映射到一个实体,这与我的第一个结果不同

第一个结果:

Select @Message
此查询返回的第二个结果集:

Select SecondId, SecondName 
From T_Table1
Select ThirdId, ThirdName 
From T_Table2
此查询返回的第三个结果集:

Select SecondId, SecondName 
From T_Table1
Select ThirdId, ThirdName 
From T_Table2
更新 我正在直接更新我的EDMX,我将包括一个来自Microsoft的示例,并解释我的问题

<FunctionImport Name="s_GetAllData">
      <ReturnType EntitySet="CustomerNames" Type="Collection(Model.CustomerName)" />
      <ReturnType EntitySet="CustomerOrders" Type="Collection(Model.CustomerOrder)" />
      <ReturnType EntitySet="CustomerShippings" Type="Collection(Model.CustomerShipping)" />
</FunctionImport>
根据这一点,我需要一个集合类型来引用,这意味着我需要数据库中的一个现有表来反映即将进入的列


除非有键字段,否则不能将表添加到EF模型中,我的结果中没有键字段。

我不使用EDMX文件,多年来也没有接触过它们,但下面是一个示例,说明如何使用POCO从存储过程调用中使用多个结果集。在下面的示例中,存储过程dbo.MyProc有两个select语句,假设第一个select语句只选择一个字符串,如示例中所示

using (DbContexts.MyDbContext db = new DbContexts.MyDbContext())
        {
                using (var cmd = db.Database.Connection.CreateCommand())
                {
                    db.Database.Connection.Open();
                    cmd.CommandText = "EXEC dbo.MyProc @param1=@param1";
                    cmd.Parameters.Add(new SqlParameter("@param1", SqlDbType.Int) { Value = 1 });

                    using (var rdr = cmd.ExecuteReader())
                    {
                        using (var objectContext = ((IObjectContextAdapter)db).ObjectContext)
                        {
                            List<string> listSTring = objectContext.Translate<string>(rdr).ToList();
                            rdr.NextResult();
                            List<MyClass> listMyClass = objectContext.Translate<MyClass>(rdr).ToList();
                        }
                    }
                }
        }

您的第一个结果仍然是一个实体,其中一个属性定义为类似于公共字符串消息{get;set;}@entropic的内容。请查看我对文章的更新。几分钟前,我使用此方法获得了一些有用的结果,仍然感谢您,我可以将此标记为答案,因为我认为大多数人不喜欢直接编辑EDMX。