实体关系未定义

时间:2016-09-14 19:24:07

标签: json.net asp.net-core entity-framework-core

在我的ASP.NET Core Web API应用程序中,我无法在Entity Framework Core中关联实体。当我通过Postman向Controller发送GET请求时,将返回所有Model的记录,但其相关实体的导航属性将返回null。不幸的是,也没有抛出任何错误或异常。 (简化)代码如下:

//DBContext
protected override void OnModelCreating(ModelBuilder modelBuilder)
    {

        modelBuilder.Entity<Location>();

        modelBuilder.Entity<Person>(entity =>
        {
            entity.HasOne(p => p.Location)
                .WithMany(l => l.People)
                .HasForeignKey(p => p.Location_ID);
        });
    }


//Person Model
public partial class Person
{
    [Key]
    public int People_ID { get; set; }

    public int? Location_ID { get; set; }
    public Location Location { get; set; }
}

//Location Model
public partial class Location
{
    public Location()
    {
        People = new HashSet<Person>();
    }

    [Key]
    public int Location_ID { get; set; }

    public ICollection<Person> People { get; set; }
}

据我所知,因为我在OnModelCreating方法中使用Fluent API来确定两个模型是相关的,所以属性应该是“热切地加载”。为什么不发生这种情况?

1 个答案:

答案 0 :(得分:1)

  

据我了解,因为我在OnModelCreating方法中使用Fluent API指示两个模型是相关的,所以属性应该是'Eagerly Loaded'

你理解错了。 Eager Loading行为不是隐式的(如延迟加载),您必须使用Include / ThenInclude方法明确请求它。

例如,以下内容将返回填充了Person属性的Location个实体:

return db.Set<Person>().Include(p => p.Location);