我有两个实体之间的一对多关系,Fight 和 FightCard(一场战斗属于一张战斗卡,一张战斗卡可以有很多次战斗)。战斗实体与名为 Fighters 的实体具有多对多关系。我想做的是在 FightCard 视图中显示 Fight 实体的详细信息(这很简单,我可以这样做),但我还要显示与 Fight 实体具有一对多关系的 Fighters 的详细信息。
如何才能做到这一点?我希望这是有道理的。
我有两个实体之间的一对多关系,Fight 和 FightCard(一场战斗属于一张战斗卡,一张战斗卡可以有很多次战斗)。战斗实体与名为 Fighters 的实体具有多对多关系。我想做的是在 FightCard 视图中显示 Fight 实体的详细信息(这很简单,我可以这样做),但我还要显示与 Fight 实体具有一对多关系的 Fighters 的详细信息。
如何才能做到这一点?我希望这是有道理的。
您没有在代码中包含太多内容,所以这里有一个基本示例,概述了您正在尝试做的事情。
所以,假设你有一些这样的实体类:
public class FightCard
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Fight> Fights { get; set; }
}
public class Fight
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public FightCard FightCard { get; set; }
public virtual ICollection<Fighter> Fighters { get; set; }
}
public class Fighter
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Fight> Fights { get; set; }
}
有一个像这样的控制器有一个Details
动作:
public class FightCardsController : Controller
{
private MyContext context = new MyContext();
public ActionResult Details(int id)
{
FightCard fightCard = context.FightCards.Find(id);
if (fightCard == null)
{
return this.HttpNotFound();
}
return this.View(fightCard);
}
}
然后,您可以制作FightCards\Details.cshtml
如下视图:
@model MyProject.Models.FightCard
<h1>Fight Card: @Model.Name</h1>
<ul>
@foreach (var fight in Model.Fights)
{
<li>
Fight: @fight.Name
<ul>
@foreach (var fighter in fight.Fighters)
{
<li>Fighter: @fighter.Name</li>
}
</ul>
</li>
}
</ul>