我有一个相当简单的数据库结构,TableA连接到TableB连接到TableC,我只想得到一个linq语句来获取填充的数据对象。为什么这么难?
我有类似的东西
TableA
ID (pk)
TableB
ID
TableAID (yes this is a fk to TableA)
TableCID (yes this is a fk to TableC)
TableC
ID (pk)
现在,我正在尝试
var SomeVar = context.Include(t=>t.AnotherTable)
.Include(t => t.YetAnotherTable)
.Include(t => t.TableB)
.Include(t => t.TableC)
或者
.Include(t=>t.TableB.TableC)
但是当我运行这些时,没有工作,导航道具的错误就不存在了。我怎么得到这个?我们将不胜感激任何帮助?!
答案 0 :(得分:0)
我不知道.include()方法适用于db上下文本身,所以我可能完全误解了这个问题。
看起来您正在考虑SQL JOIN语句,而不是EF的工作方式。让它照顾你。假设TableA,TableB和TableC都具有适当的导航属性,那么执行以下操作:
int myKey = 12345;
TableB myObject = context.TableBs.Where(b => b.ID == myKey).First();
此时变量" myObject"是TableB类型,具有以下属性:ID,TableA,TableB。因此,如果TableA有一个名为" Name"你可以访问它作为myObject.TableA.Name。如果你想在没有往返服务器的情况下这样做,你可以这样写:
TableB myObject = context.TableBs.Include(b => b.TableA).Where(b => b.ID == myKey).First();
这是"渴望加载"但是没有必要从相关表中获取数据。