【发布时间】:2018-11-07 01:54:55
【问题描述】:
如何加入三个表并获得所有值 对于两个表我参考
using(Dataclasscontext DbContext = new Dataclasscontext())
{
var result = (from t1 in DbContext.tbl1 join t2 in DbContext.tbl2 on t1.id equel t2.id select new {t1.id,t1.name,t2.class,t2.std}).toArray();
}
我参考了三个表
using(Dataclasscontext DbContext = new Dataclasscontext())
{
var result = (from t1 in DbContext.tbl1
from t2 in DbContext.tbl2 where t1.id1 == t2.id1
from t3 in Db`enter code here`Context.tbl3 where t2.id2 == t3.id2).toArray();
}
但不希望这种类型的查询用于连接三个表。有没有人帮我用 join 加入三个表
【问题讨论】:
-
你要找的结果是什么样的join?左、右还是内?
-
怎么样 var result = _dbContext.tbl1.Include("tbl2").Include("tbl2.tbl3").ToList(); ?
-
这是 EF/LINQ 中最常见的气味之一。试图将 entities 视为表,并将 LINQ 视为 SQL 的替代品。他们不是。在您的 entities 中创建适当的关系和导航属性,EF 将生成连接。您所要做的就是加载 根实体,EF 将加载所有子实体
-
@tzm
Include并不意味着加入。如果尚未定义关系,它将不起作用..它也不需要。如果最终的Select调用从子类中读取数据,则将生成正确的连接和选择以仅返回必要的数据 -
@MinhajPatel 换句话说,1,2 或 5 张桌子,这并不重要。您可以编写非常相似的查询来检索您想要的数据