Если условие в Entity Framework не работает правильно - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть Article и ArticleTranslation таблицы.

Когда я использую этот запрос, он не получает данные:

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 голосов
/ 10 декабря 2018

Я не знаю, как выглядят свойства объектов вашей модели, но сравнивая оба фрагмента кода, я вижу в успешном, свойства IsActive и IsDelete не вызывают свойство Value, то есть IsActive.Value и IsDelete.Value.Таким образом, ваш код должен выглядеть следующим образом:

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

Это предполагает, что ваши свойства навигации выполнены правильно.

...