未定义实体关系



. NET Core Web API应用程序,我在实体框架核心中关联实体时遇到麻烦。当我通过Postman向控制器发送GET请求时,返回所有模型的记录,但是它们相关实体的导航属性返回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相关的,所以属性应该是"急切加载"的。为什么这种情况没有发生?

据我所知,因为我指示这两个模型是使用OnModelCreating方法中的Fluent API相关的,所以属性应该是"急切加载"

你理解错了。急切加载行为不是隐式的(像惰性加载),你必须使用Include/ThenInclude方法显式地请求它。

例如,以下命令将返回填充了Location属性的Person实体:

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

相关内容

  • 没有找到相关文章

最新更新