【发布时间】:2013-12-08 18:17:44
【问题描述】:
在我的模型中,一个人 (HrPerson) 可以拥有多个头衔 (HrPersonTitle)。所以我创建了下面的模型来建立两个模型之间的多对多关系。
人力资源模型:
public class HrPerson
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<HrPersonTitle> HrPersonTitle { get; set; }
}
HrPersonTitle 模型:
public class HrPersonTitle
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection <HrPerson> HrPerson { get; set; }
}
在我的 DbContext 类中:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<HrPerson>()
.HasMany(s => s.HrPersonTitle)
.WithMany(c => c.HrPerson)
.Map(t =>
{
t.MapLeftKey("HrPersonId")
.MapRightKey("HrPersonTitleId")
.ToTable("HrMapPersonTitle");
});
}
当我更新数据库时,HrMapPersonTitle 已创建。我认为多对多关系是可以的(?)
我的问题在于控制器操作。我的目标是获取属于任何人的所有title's name。我实现了以下代码。
控制器:
public PartialViewResult _ViewHrPersonTitle(int? personId)
{
var Titles = db.HrPersonTitle.Where(p => p.HrPerson.**(ID)???** = personId)
return PartialView(Titles);
}
似乎我无法从 HrPersonTitle 模型访问 HrPerson-ID 属性。我认为这是应该的。 我想知道获取属于 Person 的所有 Title 的最佳方法是什么?
【问题讨论】:
标签: asp.net-mvc entity-framework ef-code-first many-to-many asp.net-mvc-5