public class Unit
{
Public int Id { get; set; }
Public virtual ICollection<Element> Elements { get; set; }
}
public class Element
{
public int Id { get; set; }
public virtual Unit Unit { get; set; }
}
我们使用API调用来获取所有具有相关Element
的{{1}}。
像这样:
Unit
我们的期望是只有Context.Elements.Include(o => o.Unit);
个拥有Element
。但是,Unit
个也有Unit
Element
如何从{
"Id": 1,
"Unit": {
"Id": 1,
"Elements":[...]
}
}
中排除Element
?
答案 0 :(得分:1)
EF Core将填充实体的导航属性。
Context.Element.Include(e => e.Unit)
上面的行将加载内存中的所有Element
实体,因此也会填充Unit.Elements
。
Entity Framework Core将自动修复导航属性 到先前已加载到上下文中的任何其他实体 实例。因此,即使您没有明确包括 导航属性,如果某些或 所有相关实体都是先前加载的。
EF Core 2.1现在支持延迟加载,这可能可以回答您的问题,但是,正如我上面提到的,在您的情况下,所有Elements
都已加载到内存中。
答案 1 :(得分:0)
目前没有解决方案。
正如here所指出的,有一种解决方法:
Context.Elements.Include(o => o.Unit).Select(o => new Element()
{
Id = o.Id,
Unit = o.Unit
});