实体框架中的条件无法正常工作的地方

时间:2018-12-10 15:21:45

标签: entity-framework entity-framework-6 asp.net-core-mvc

我有ArticleArticleTranslation表。

当我使用此查询时,它不会检索数据:

model.CategoryList = await db.ArticleCategoryTranslations
            .Where(x => x.LangId == lang.Id && 
            x.ArticleCategory.IsActive.Value == true && 
            x.ArticleCategory.IsDelete.Value == false)
            .Select(x => new ddl { Id = x.RecordId.Value, Name = x.Title }).ToListAsync();

但是当我使用它时,它起作用了,请告诉我第一个代码中有什么问题

model.CategoryList = await db.ArticleCategoryTranslations
            .Where(x => x.LangId == lang.Id && 
            db.ArticleCategorys.Where(u => u.Id == x.RecordId).FirstOrDefault().IsActive == true &&
            db.ArticleCategorys.Where(u => u.Id == x.RecordId).FirstOrDefault().IsDelete == false 
            )
            .Select(x => new ddl { Id = x.RecordId.Value, Name = x.Title }).ToListAsync();

1 个答案:

答案 0 :(得分:0)

我不知道模型对象的属性是什么样子,但是比较我在成功的示例中看到的两个代码段,IsActiveIsDelete属性不会调用Value属性,即{ {1}}和IsActive.Value。 因此您的代码应类似于

IsDelete.Value

这假设您已正确完成导航属性。