C# 如何使用EF/Linq获得多个结果集

C# 如何使用EF/Linq获得多个结果集,c#,asp.net,entity-framework,linq,swagger-ui,C#,Asp.net,Entity Framework,Linq,Swagger Ui,使用linq或EF向我的api获取多个结果集的最佳方法是什么 因为我有大约25个不同的结果集 但我只得到了第一个结果集来炫耀使用 [HttpGet] [Route("tire-tabel")] public List<DeviationCalculation_Result> TireTabel(decimal presentWidth, decimal presentAspectRatio, string presentRimSize, i

使用linq或EF向我的api获取多个结果集的最佳方法是什么

因为我有大约25个不同的结果集

但我只得到了第一个结果集来炫耀使用

       [HttpGet]
       [Route("tire-tabel")]
       public List<DeviationCalculation_Result> TireTabel(decimal presentWidth, decimal presentAspectRatio, string presentRimSize, int maxDeviation)
                   {
                       using (var context = new OminiTireEntities())
                       {
                           String sql =
                           "SET NOCOUNT ON; " +
                           "EXEC [Tabel].[DeviationCalculation] " +
                           "@PresentWidth= '" + presentWidth + "', " +
                           "@PresentAspectRatio= '" + presentAspectRatio + "', " +
                           "@PresentInches= '" + presentRimSize + "', " +
                           "@MaxDeviation= '" + maxDeviation + "' ";


                           List<SqlParameter> sqlParams = new List<SqlParameter>();
                           sqlParams.Add(new SqlParameter("PresentWidth", (object) presentWidth ?? DBNull.Value));
                           sqlParams.Add(new SqlParameter("PresentAspectRatio", (object)presentAspectRatio ?? DBNull.Value));
                           sqlParams.Add(new SqlParameter("PresentInches", (object)presentRimSize ?? DBNull.Value));
                           sqlParams.Add(new SqlParameter("MaxDeviation", (object)maxDeviation ?? DBNull.Value));
                           var result = context.Database.SqlQuery<DeviationCalculation_Result>(sql).ToList<DeviationCalculation_Result>();               

return result;
                       }
                   }
[HttpGet]
[路线(“轮胎标签”)]
公共列表TireTabel(十进制presentWidth、十进制presentspectratio、字符串presentRimSize、int max偏差)
{
使用(var context=new ominitreenties())
{
字符串sql=
“不计数;”+
“执行[Tabel]。[DeviationCalculation]”+
“@PresentWidth=”+PresentWidth+“,”+
“@PresentAspectRatio=”+PresentAspectRatio+“,”+
“@presentiches=”+presentRimSize+“,”+
“@MaxDeviation=”+MaxDeviation+”;
List sqlParams=new List();
Add(新的SqlParameter(“PresentWidth”,(对象)PresentWidth??DBNull.Value));
Add(新的SqlParameter(“PresentAspectRatio”,(object)PresentAspectRatio??DBNull.Value));
Add(新的SqlParameter(“presentiches”,(object)presentRimSize??DBNull.Value));
Add(新的SqlParameter(“MaxDeviation”,(object)MaxDeviation??DBNull.Value));
var result=context.Database.SqlQuery(sql.ToList();
返回结果;
}
}

简而言之,实体框架本机不支持此用例:

  • 对于经典EF5或6,请查看(您需要使用低级ADO.NET数据读取器)

  • EF Core(事件版本2)不支持多个结果集(请参阅)


如果您想将多个结果读入EF模型,您可以使用NReco。简而言之,除了EF:

之外,Entity Framework本机不支持此用例:

  • 对于经典EF5或6,请查看(您需要使用低级ADO.NET数据读取器)

  • EF Core(事件版本2)不支持多个结果集(请参阅)


如果要将多个结果读入EF模型,除了EF之外,还可以使用NReco.Data library:

在一个简单的情况下,您可以创建SQL函数,该函数返回两个或多个表的组合结果。然后更新.edmx并从EF执行函数

在一个简单的情况下,您可以创建SQL函数,该函数返回两个或多个表的组合结果。然后更新.edmx并从EF执行函数

是的,从StoredProcess创建整个funktion,然后将所有这些结果放在一个列表中,这可能是最简单的方法。是的,从StoredProcess创建整个funktion,然后将所有这些结果放在一个列表中,这可能是最简单的方法way@SPDev我不知道你是什么意思。你的答案是错的,我的答案是错的被否决是正确的@首先,我没有否决任何东西。其次,我的答案是正确的——看看我答案中EF 5/6的链接,它描述了相同的方法:应该直接使用ADO.NET,数据读取器的结果可以通过Translate方法映射到模型。总的来说,EF无法以本机方式读取多个结果集,而无需编写SqlCommand并手动执行数据读取器。@SPDev我不知道你的意思。你的答案是错误的,而你否决的我的答案是正确的@首先,我没有否决任何东西。其次,我的答案是正确的——看看我答案中EF 5/6的链接,它描述了相同的方法:应该直接使用ADO.NET,数据读取器的结果可以通过Translate方法映射到模型。总体而言,EF无法本机读取多个结果集,而无需编写SqlCommand并手动执行数据读取器。-谷歌在你问之前!你很幸运我不能投反对票谷歌在你问之前!你很幸运我不能投反对票。