查询从多个实体返回属性

本文关键字:返回 属性 实体 查询 | 更新日期: 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
    };

}