访问关系中的数据

时间:2013-01-12 21:42:28

标签: c# asp.net-mvc entity-framework asp.net-mvc-4

我有两个实体之间的一对多关系,战斗和战斗卡(战斗属于战斗卡,战斗卡可以有很多战斗)。战斗实体与称为战士的实体有多对多的关系。我想要做的是在FightCard视图中显示Fight实体的详细信息(这很简单,我可以这样做)但我还要显示与Fight实体具有一对多关系的Fighters的详细信息。

如何做到这一点?我希望这是有道理的。

1 个答案:

答案 0 :(得分:3)

您没有在代码方式中包含太多内容,因此这里有一个基本示例,概述了您要执行的操作。

所以,假设您有一些像这样的实体类:

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>