EF7为实体的多个实体集合获取空值

时间:2016-03-10 01:37:00

标签: asp.net-mvc entity-framework linq many-to-many

我为嵌套在顶层实体中的实体集合获取空值。如何正确编写LINQ查询以使这些值不为空?

我正在使用Entity Framework 7和MVC 6以下是我的课程:

我的模特:

public class WorkStation
{
    public Id { get; set; }
    public string Name{ get; set; }
    public ICollection<PersonWorkStation> PersonWorkStations{ get; set; }
}

public class Person
{
    public Id { get; set; }
    public string FirstName { get; set; }
    public ICollection<PersonWorkStation> PersonWorkStations{ get; set; }
}

public class PersonWorkStation
{
    public int Id { get; set; }

    public int PersonId { get; set; }
    public Person Person { get; set; }

    public int WorkStationId { get; set; }
    public WorkStation WorkStation { get; set; }
}

我的DbContext:

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<PersonWorkStation>()
            .HasKey(op => new { op.Id });

        modelBuilder.Entity<PersonWorkStation>()
            .HasOne(pt => pt.Person)
            .WithMany(p => p.PersonWorkStation)
            .HasForeignKey(pt => pt.PersonId);

        modelBuilder.Entity<PersonWorkStation>()
            .HasOne(pt => pt.WorkStation)
            .WithMany(t => t.PersonWorkStation)
            .HasForeignKey(pt => pt.WorkStationId);

        base.OnModelCreating(modelBuilder);
    }

所以说到这一点,当我带回一个人,并查看&#34; PersonWorkStation&#34;集合时,WorkStation属性为null。我怎样才能把这个实体带回来?

以下是我检索数据的方法:

        var person = _context.Persons
            .Include(p => p.PersonWorkStation)
            .FirstOrDefault(p => p.Id == 1);

        return person;

同样,对于person.PersonWorkStations集合中的所有项,person.PersonWorkStations.Workstation实体为null。我该如何归还这个实体?

谢谢!

1 个答案:

答案 0 :(得分:2)

我找到了答案,我需要添加这一行:

var person = _context.Persons
        .Include(p => p.PersonWorkStation)
        .ThenInclude(p => p.WorkStation)
        .FirstOrDefault(p => p.Id == 1);

return person;