我必须从数据库加载一个实体,我需要急切地将几乎所有来自数据库的关系加载到该实体中。我尝试使用Include
但没有成功。这是代码:
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不支持APPLY
使用EntityFramework 6和Oracle 11.2.0.2.0。 我无法升级EF或Oracle。
如何将GREEN_TWO等关系加载到thingy?
编辑:从左到右显示的所有关系都是一对多。例子:
答案 0 :(得分:2)
您始终可以使用Join
代替Include
,e。 G:
var thingy = _ctx.MASTERANDCOMMANDER
.Join(RED, x => x.MASTERANDCOMMANDERID, x => REDID, (m, r) => m)...etc...
等等,您需要从数据库中获取RED
作为另一个单一实体。
答案 1 :(得分:0)
也许正在使用.ThenInclude()会有所帮助
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();