【发布时间】:2022-01-16 04:02:21
【问题描述】:
我有 3 个模型:Human、Skill 和 HumanSkill。 Human 和Skill 之间存在多对多关系,HumanSkill 是它们之间的中间表。
我对数据库的查询正确加载了中间表HumanSkill 的集合,但没有加载引用导航属性Skill,我想通过该属性使用查询加载Skill 名称(Human -> HumanSkill -> Skill -> Skill.name)选择投影。
public IActionResult Preview(int humanId)
{
var currentHuman = this.db.Humans
.Where(x => x.Id == humanId)
.Select(r => new HumanPreviewViewModel
{
PrimaryData = r.PrimaryData,
// How should I write this line?
Skills = r.Skills.ToList(),
}).SingleOrDefault();
return View(currentResume);
}
人体模型:
public class Human
{
public Human()
{
this.Skills = new HashSet<HumanSkill>();
}
public int Id { get; set; }
public virtual PrimaryData PrimaryData { get; set; }
public virtual ICollection<HumanSkill> Skills { get; set; }
}
HumanSkill模特:
public class HumanSkill
{
public int Id { get; set; }
public int HumanId { get; set; }
public Human Human { get; set; }
public int SkillId { get; set; }
public Skill Skill { get; set; }
}
技能模型:
public class Skill
{
public Skill()
{
this.Humans = new HashSet<HumanSkill>();
}
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<HumanSkill> Humans { get; set; }
}
HumanPreviewViewModel:
public class HumanPreviewViewModel
{
public HumanPreviewViewModel()
{
}
public PrimaryData PrimaryData { get; set; }
public List<HumanSkill> Skills { get; set; }
}
}
【问题讨论】:
-
您可以在
HumanSkill上查询,然后使用Include查询Skill -
如何在不使用包含的情况下实现这一目标?我更喜欢查询预测。
-
在 Select 或 Where 中使用来自
Skill的一些数据..
标签: c# asp.net entity-framework