加入并包含在实体框架中

.net c# entity-framework linq sql

我有以下查询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;

有没有其他方式来询问此查询?也许拆分或什么?

一般承认的答案

那么,Include与哪里相矛盾。包括说“加载所有标签”。在哪里说“加载一些标签”。当查询和Include之间存在矛盾时,查询将始终获胜。

要从包含至少一个标记== text的任何项目返回所有标记:

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

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

这是一本关于LINQ的非常好的免费书



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因