Asp.net core EF核心显式忽略关系
我们的期望是只有Asp.net core EF核心显式忽略关系,asp.net-core,.net-core,entity-framework-core,asp.net-core-webapi,Asp.net Core,.net Core,Entity Framework Core,Asp.net Core Webapi,我们的期望是只有元素s会有单元。但是,单元s也有元素s Context.Elements.Include(o => o.Unit); 如何将元素从单元中排除?目前没有解决方案 如前所述,有一个解决办法: { "Id": 1, "Unit": { "Id": 1, "Elements":[...] } } 如果相关实体已加载到内存中,EF Core将填充实体的导航属性 Context.Elements.Include(o => o.Unit).Sel
元素
s会有单元
。但是,单元
s也有元素
s
Context.Elements.Include(o => o.Unit);
如何将
元素
从单元中排除?目前没有解决方案
如前所述,有一个解决办法:
{
"Id": 1,
"Unit": {
"Id": 1,
"Elements":[...]
}
}
如果相关实体已加载到内存中,EF Core将填充实体的导航属性
Context.Elements.Include(o => o.Unit).Select(o => new Element()
{
Id = o.Id,
Unit = o.Unit
});
上面的行将加载内存中的所有Element
实体,因此它也将填充Unit.Elements
实体框架核心将自动修复导航属性
到以前加载到上下文中的任何其他实体
例如。因此,即使您没有明确地包含
导航属性,如果某些或
以前加载了所有相关实体
EF Core 2.1现在支持延迟加载,这可能会回答您的问题,但是,正如我前面提到的,在您的例子中,所有元素都已加载到内存中
1个单元可以有0个或多个元素。但元素必须有一个单元才能存在/创建。不能从单元中排除元素。这就是它的工作原理
Context.Elements.Include(o => o.Unit).Select(o => new Element()
{
Id = o.Id,
Unit = o.Unit
});
Context.Element.Include(e => e.Unit)