[英]How do you get data across multiple tables with EF and linq?
我有一个相当简单的数据库结构,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)
但是当我运行这些命令时,NOTHING无效,关于导航道具的错误并不存在。 我怎么得到这个? 任何帮助将不胜感激吗?
我不知道适用于db上下文本身的.include()方法,因此我可能完全误解了这个问题。
您似乎在考虑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();
这是“紧急加载”,但从相关表获取数据不是必需的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.