实体框架核心/ SQLite:连接“展平”结果后的GroupJoin

时间:2018-09-09 17:10:58

标签: c# entity-framework sqlite entity-framework-core entity-framework-core-2.1

使用Entity Framework Core 2.1和一个SQLite数据库,如果我在另一个Join之后使用它,则会得到与LINQ GroupJoin不同的行为。目前尚不清楚这是一个错误还是我忽略了某些事情。

我创建了一个最小的VS2017项目来重现此内容,可以在这里找到:
https://gitlab.com/haddoncd/EntityFrameworkGroupJoinIssue

在此示例中,我为Blog表中的每一行得到一个对象,每一行包含多个PostTitles:

db.Blogs
    .GroupJoin(
        db.Posts,
        s => s.BlogId,
        p => p.BlogId,
        (s, ps) => new
        {
            s.BlogId,
            s.BlogTitle,
            PostTitles = ps.Select(p => p.PostTitle),
        }
    )
    .OrderBy(x => x.BlogId))

但是在此示例中,结果是“扁平化的”-与传统的SQL外连接一样,我为每个Blog-Post对获得一个对象:

db.Subscriptions
    .Join(
        db.Blogs,
        s => s.BlogId,
        b => b.BlogId,
        (s, b) => new
        {
            s.SubscriptionId,
            b.BlogId,
            b.BlogTitle,
        }
    )
    .GroupJoin(
        db.Posts,
        x => x.BlogId,
        p => p.BlogId,
        (x, ps) => new
        {
            x.SubscriptionId,
            x.BlogTitle,
            PostTitles = ps.Select(p => p.PostTitle),
        }
    )
    .OrderBy(x => x.SubscriptionId))

0 个答案:

没有答案
相关问题