假设我的数据库中有这个数据结构。
Parent_table
ParentID
someOtherProp
与Child_table
具有1:N关系,如下所示
ChildID
ParentID
此Child_table
还有一个子表,其中1:N关系为SubChild_table
SubChildID
ChildID
现在,我有SubChildID
。如何访问Parent_table someOtherProp
?我试过.Include()
,但我真的不确定怎么写。到目前为止,我有这样的事情:
var foo = _db.Parent_table
.Include(c => c.Child_table
.Select(d => d.SubChild_table
.Where(f => f.SubChildID == subChildID)))
.Select(r => r.someOtherProp)
.SingleOrDefault();
我得到的错误是:
Include路径表达式必须引用导航属性 在类型上定义。使用虚线路径进行参考导航 属性和集合导航的Select运算符 属性。参数名称:路径
答案 0 :(得分:2)
除非您想返回所包含的属性,否则您不需要.Include
。在构造查询时,您可以自由地访问层次结构中所有对象的所有属性。
所以,我认为你想要的是:
var foo = (from p in _db.Parent_table
join c in _db.Child_table on p.ParentId equals c.ParentId
join s in _db.SubChild_table on c.ChildId equals s.ChildId
where s.SubChildId == subChildId
select p.someOtherProp).SingleOrDefault();
答案 1 :(得分:1)
提供外键关系集
var pathString = pathToFile.path! + "/" + fileName
答案 2 :(得分:1)
猜猜..
var foo = from pt in Parent_table
join ct in Child_table
on pt.ParentID equals ct.ParentID
join sct in SubChild_table
on ct.ChildID equals sct.ChildID
where sct.SubChildID == "YourValue"
select new {
pt.SomeOtherProp
};
或者
var foo = Parent_table
.Join(Child_table, p => p.ParentID, c => c.ParentID, (p, c) => new { p, c })
.Join(SubChild_table, sc => sc.c.ChildID, c => c.ChildID, (sc, c) => new { sc, c })
.Where(sc.SubCHildID == "YourValue")
.Select(m => new {
m.p.someOtherProp
});