C# 如何使用EF/Linq获得多个结果集
使用linq或EF向我的api获取多个结果集的最佳方法是什么 因为我有大约25个不同的结果集 但我只得到了第一个结果集来炫耀使用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
[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并手动执行数据读取器。-谷歌在你问之前!你很幸运我不能投反对票谷歌在你问之前!你很幸运我不能投反对票。