Asp.net mvc MVC EF选择多个联接

Asp.net mvc MVC EF选择多个联接,asp.net-mvc,entity-framework,select,Asp.net Mvc,Entity Framework,Select,我有下面的数据库结构。 我想使用实体框架进行选择。我想要我所有的类别,它们可能有类别文本。如果他们有分类文本,我还需要获得语言 我搜索了一下,没有找到任何有用的东西。 以下是我的查询不起作用: var categoriesSQL = db.Categories .Include(i => i.CategoryTexts.Select(s => s.Language) .Where(w => w.For

我有下面的数据库结构。

我想使用实体框架进行选择。我想要我所有的
类别
,它们可能有
类别文本
。如果他们有
分类文本
,我还需要获得
语言

我搜索了一下,没有找到任何有用的东西。 以下是我的查询不起作用:

var categoriesSQL = db.Categories
                   .Include(i => i.CategoryTexts.Select(s => s.Language)
                   .Where(w => w.Format == (string)Session["chosen_language"]));
var categories = categoriesSQL.ToList();
它抛出:
包含路径表达式必须引用在类型上定义的导航属性。使用虚线路径作为参考导航属性,选择运算符作为集合导航属性。
参数名称:路径

我试图用很多方法和建议来解决这个问题,但我找不到解决办法

我希望只在一个查询中进行选择

谢谢大家!

试试这个

var language = (string)Session["chosen_language"];
var categoriesSQL = db.Categories
                   .Include(i => i.CategoryTexts.Select(s => s.Language))
                   .Where(c => 
                          (from ct in c.CategoryTexts
                          from l in ct.Languages
                          select l.Format).Contains(language)
                    );
var categories = categoriesSQL.ToList();

var language = (string)Session["chosen_language"];
var categoriesSQL = db.Categories
                   .Include(i => i.CategoryTexts.Select(s => s.Language))
                   .Where(c => c.CategoryText
                                 .Any(ct => ct.Languages
                                      .Any(l => l.Format == language)
                                 ) 
                    );
var categories = categoriesSQL.ToList();