. 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);