>我有包含List<Subcategory>
的类Category
。
使用 LINQ(最好(,我想获取所有Categories
,但过滤它们的Subcategorie
,以便生成的查询如下所示:
SELECT * FROM categories
LEFT JOIN subcategories ON subcategories.category_Id = categories.id WHERE subcategories.Retired = false
我试过:
session.QueryOver<Category>()
.Left.JoinQueryOver(c => c.Subcategories, () => subcategoryAlis, s => !s.Retired)
.List<Category>())
还有其他一些看起来很笨拙的技巧,但我似乎无法得到我需要的结果。上面的查询产生完全无用的结果,相同的条目多次出现,许多条目丢失。
自从我使用 NHibernate 以来已经有一段时间了,但我会使用一些专用的 DTO 类来转换为 Json,而不是直接从实体。我认为类似于以下 linq 查询的内容应该有效:
from c in session.Query<Category>
select new CategoryDto {
Name = c.Name, //and other properties
SubCategories = c.SubCategories
.Where(sc => !sc.Retired)
.Select(sc => new SubCategoryDto { ... })
.ToList()
}