加入并包含在实体框架中

Posted

技术标签:

【中文标题】加入并包含在实体框架中【英文标题】:Join and Include in Entity Framework 【发布时间】:2010-09-29 19:58:48 【问题描述】:

我有以下关于 linq 到实体的查询。问题是它似乎没有加载“标签”关系,即使我已经为它添加了一个东西。如果我不加入标签,它工作正常,但我需要这样做。

            var items = from i in db.Items.Include("Tags")
                        from t in i.Tags
                        where t.Text == text
                        orderby i.CreatedDate descending
                        select i;

还有其他方法可以询问这个问题吗?也许分开或其他什么?

【问题讨论】:

【参考方案1】:

嗯,Include 与 where 相矛盾。包括说,“加载所有标签。” where 表示“加载一些标签”。当查询与包含矛盾时,查询永远胜出。

要从任何项返回所有标签,至少一个标签==文本:

        var items = from i in db.Items.Include("Tags")
                    where i.Tags.Any(t => t.Text == text)
                    orderby i.CreatedDate descending
                    select i;

(未经测试,因为我没有你的数据库/模型)

这里是a really good, free book on LINQ。

【讨论】:

关于如何以其他方式编写它的任何建议,以便我可以获取标签并对其进行条件处理。在常规 SQL 中会很简单。 你想包含来自任何项目的所有标签,至少有一个标签 == 文本?

以上是关于加入并包含在实体框架中的主要内容,如果未能解决你的问题,请参考以下文章

在实体框架查询中包含多个

如何在无服务器框架中包含静态文件?

在框架模块中包含非模块化标头

Swift 框架伞头 - 在框架模块中包含非模块化头

在实体中包含集合是不是违反了实体的本应?

在 Xcode 静态库中包含框架?