1

我首先使用实体​​框架数据库来构建我的数据库模型。到目前为止,我一直在处理单个表/实体,并且通过查询获取数据并将其保存在列表中以呈现数据已经非常顺利。

现在我处于需要加入几张桌子并发现自己有点挣扎的情况。我认为我可以简单地加入我需要的实体,因为它们彼此有一个外键,但是我很难找到一个返回我想要的集合的查询,它基本上是所有表中的所有列。

在 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
    };
}
4

1 回答 1

0

正如评论中已经提到的那样,您的类之间应该有导航属性,但是如果您真的想展平数据但维护可以在其他地方更新的对象,那么您可以执行以下操作:

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
    };

}

于 2013-09-06T13:24:15.607 回答