.Net MVC多级数据结构

时间:2016-07-06 16:20:20

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

我目前在我的解决方案中有3个模型:项目,所有者,位置。

我正在尝试创建一个列出所有项目的表,包括所有者名称和位置,例如:

Project Name         Owner         Location
----------------------------------------------------------
Project 1            Keith         Main Office
Project 2            Brian         Asia
Project 3            Susan         Germany

项目模型定义为:

public class Project
{
    public int Id { get; set; }
    public string ProjectName { get; set; }
    public int OwnerId { get; set; }
    public Owner Owner { get; set; }

}

所有者模型定义为:

public class Owner
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int LocationId { get; set; }
    public Location Location { get; set; }
}

位置模型定义为:

public class Location
{
    public int Id { get; set; }
    public string Name { get; set; }
}

每个表都通过基于Id值的关系链接:

Project.OwnerId => Owner.Id
Owner.LocationId => Location.Id

到目前为止,我已经能够确定如何检索所有项目的列表,并通过在我的控制器中使用以下代码将所有者名称包含在列表中:

var projects = _context.Projects.Include(p => p.Owner).ToList();

我无法弄清楚如何在项目的每个所有者部分填充位置名称。

我感觉这很简单,我只是没有把握。

提前致谢, 凯斯克拉克

2 个答案:

答案 0 :(得分:0)

您可以在Include()方法调用中引用子对象。

例如:

var projects = _context.Projects.Include(p => p.Owner).Include(p => p.Owner.Location).ToList();

答案 1 :(得分:0)

您可以使用子对象调用多次包含:

var projects = _context.Projects.Include(p => p.Owner).Include(p => p.Owner.Location).ToList();