C# 加载具有同级包含的EF实体
我必须从数据库中加载一个实体,我需要急切地将数据库中几乎所有的关系加载到该实体中。我尝试使用C# 加载具有同级包含的EF实体,c#,entity-framework,oracle11g,C#,Entity Framework,Oracle11g,我必须从数据库中加载一个实体,我需要急切地将数据库中几乎所有的关系加载到该实体中。我尝试使用包含,但没有成功。代码如下: var thingy = _ctx.MASTERANDCOMMANDER .Include(x => x.RED) .Include(x => x.RED.Select(y => y.RED_ONE)) //.Include(x => x.RED.Select(y =>
包含,但没有成功。代码如下:
var thingy = _ctx.MASTERANDCOMMANDER
.Include(x => x.RED)
.Include(x => x.RED.Select(y => y.RED_ONE))
//.Include(x => x.RED.Select(y => y.RED_TWO))
.Include(x => x.GREEN)
.Include(x => x.GREEN.Select(y => y.GREEN_ONE))
.Include(x => x.GREEN.Select(y => y.GREEN_ONE.Select(z => z.GREEN_ONE_BIG)))
//.Include(x => x.GREEN.Select(y => y.GREEN_TWO))
//.Include(x => x.GREEN.Select(y => y.GREEN_THREE))
.SingleOrDefault(x => x.ID == "someId");
如果我取消对其中任何一项的注释,应用程序将抛出:
System.Exception:Oracle 11.2.0.2.0不支持应用
使用EntityFramework 6和Oracle 11.2.0.2.0。
我无法升级EF或Oracle
如何将GREEN_TWO等的关系加载到thingy中
编辑:显示的所有关系都是从左到右的一对多关系。示例:
- 红色(1至*)红色(1)
- 绿色一(1到*)绿色一大
也许使用.thenclude()会有所帮助
var thingy = _ctx.MASTERANDCOMMANDER
.Include(x => x.RED)
.ThenInclude(red => red.RED_ONE)
.Include(x => x.GREEN)
.ThenInclude(green => green.GREEN_ONE)
.ThenInclude(greenOne => greenOne.GREEN_ONE_BIG)
.Where(x => x.ID == "someId").SingleOrDefault();
您可以始终使用Join
而不是Include
,例如。g、 :
var thingy = _ctx.MASTERANDCOMMANDER
.Join(RED, x => x.MASTERANDCOMMANDERID, x => REDID, (m, r) => m)...etc...
以此类推,您需要从数据库中以另一个实体的形式获取RED
。此版本的EF没有该方法=(尝试了此方法(实际上使用linq语法)并且有效…但是如果任何项的关系为空,它将返回一个空对象,因此我不得不使用左连接…这些在C上都很难看#