繁体   English   中英

如何使用EF和linq在多个表之间获取数据?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM