查询从多个实体返回属性
本文关键字:返回 属性 实体 查询 | 更新日期: 2023-09-27 18:30:35
我首先使用实体框架数据库来构建数据库模型。到目前为止,我已经在单个表/实体上工作,并且通过查询获取数据并将其保存在列表中以呈现数据非常顺利。
现在我的情况是,我需要加入几张桌子,发现自己有点挣扎。我可以简单地加入我需要的实体,因为它们彼此有一个外键,但我找不到返回我想要的集合的查询,这基本上是所有表中的所有列。
在 t-sql 中,我只需在键上的不同表上执行 LEFT JOIN。我考虑过创建一个视图,然后在此视图上构建模型,但我也必须能够更新数据,并且据我所知,数据库中的视图使用 EF 更新并不那么简单。
我希望做一些类似于以下查询的事情,但由于我也需要更新不同的表,我想知道是否有人有一个优雅的解决方案来做到这一点。还是我对加入 EF 根本不了解
?using(var _ctx = new EFEntities())
{
var queryResult = from a in _ctx.a
join b in _ctx.b
on a.b_ID equals b.ID
join c in _ctx.c
on b.c_IDequals c.ID
select new
{
//columns I want
};
}
正如注释中已经提到的,类之间应该有导航属性,但如果你真的想平展数据但维护可以在其他地方更新的对象,那么你可以做这样的事情:
using(var _ctx = new EFEntities())
{
var queryResult = from a in _ctx.a
join b in _ctx.b
on a.b_ID equals b.ID
join c in _ctx.c
on b.c_IDequals c.ID
select new
{
a = a,
b = b,
c = c
};
}