我想在 dotnetcore web api 控制器中使用 linq 方法通过 entityframework 从多个表中获取数据
Posted
技术标签:
【中文标题】我想在 dotnetcore web api 控制器中使用 linq 方法通过 entityframework 从多个表中获取数据【英文标题】:I want to bring data from multiple tables with entityframework using linq method in dotnetcore web api controller 【发布时间】:2021-04-02 06:52:47 【问题描述】:public class Mission
public int Id get; set;
public string Name get; set;
public long Duration get; set; // time stored in second
public string Aircraft get; set;
public string Syllabus get; set;
public int MissionTypeId get; set;
public int PhaseId get; set;
public MissionType Type get; set;
public Phase Phase get; set;
public class Phase
public int PhaseId get; set;
public string PhaseName get; set;
public ICollection<Mission> Missions get; set;
public class MissionType
public int MissionTypeId get; set;
public string MissionTypeName get; set;
public ICollection<Mission> Missions get; set;
// 当我使用 await context.Missions.ToListAsync();在控制器中,它给了我类似这种格式的项目列表。
"id": 1,
"name": "ID-1",
"duration": 3600,
"aircraft": "PT-6",
"syllabus": "BASIC CONV",
"missionTypeId": 1,
"phaseId": 1,
"type": null,
"phase": null
// 我需要这种格式的列表。我可以使用哪种 linq 查询方法从数据库中获取这样的结果
"id": 1,
"name": "ID-1",
"duration": 3600,
"aircraft": "PT-6",
"syllabus": "BASIC CONV",
"missionTypeId": 1,
"phaseId": 1,
"type":
"missionTypeId": 1,
"missionTypeName": "ID - 1 "
,
"phase":
"phaseId": 1,
"phaseName": "ID"
【问题讨论】:
这不是问题。请告诉我们您正在尝试做什么,您不能做什么,以及您需要帮助的具体内容。 【参考方案1】:您需要明确告诉 EF Core 您要加载哪些相关实体。
试试这个:
await context.Missions
.Include(m => m.Type)
.Include(m => m.Phase)
.ToListAsync();
【讨论】:
【参考方案2】:试试下面的代码:
var mission = (from m in _context.Missions
join t in _context.MissionTypes on m.MissionTypeId equals t.MissionTypeId
join p in _context.Phases on m.PhaseId equals p.PhaseId
select new Mission
Id = m.Id,
Name = m.Name,
Duration = m.Duration,
Aircraft = m.Aircraft,
Syllabus = m.Syllabus,
MissionTypeId = m.MissionTypeId,
PhaseId = m.PhaseId,
Type = m.Type,
Phase = m.Phase
).FirstOrDefault();
【讨论】:
以上是关于我想在 dotnetcore web api 控制器中使用 linq 方法通过 entityframework 从多个表中获取数据的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 msbuild 从 dotnetcore web-api 项目中触发“ng build”,但将 angular 项目保存在单独的文件夹中?