IncludeFilter в EntityFramework CORE-Plus не фильтрует включенную запись

Используя приведенный ниже запрос Linq с Entity Framework Core 3 и библиотекой EntityFramework Core Plus, я ожидаю, что верну 1 Factor со всеми элементами с логическим значением IsActive, установленным на true. Вместо этого я получаю 1 фактор и все элементы, независимо от того, является ли значение IsActive истинным или ложным. Почему?

public class Factor 
    {
        public Factor()
        {
            Items = new List<Item>();
        }
        public bool IsActive{ get; set; }
        public int FactorId { get; set; }
        public virtual ICollection<Item> Items { get; set; }
    }
public class Item 
    {
        [ForeignKey("Factor")]
        public int? FactorId { get; set; }
        public virtual Factor Factor { get; set; }
        public bool IsActive{ get; set; }
        public int ItemId { get; set; }

    }
Factors
.IncludeFilter(a => a.Items.Where(b => b.IsActive))
.FirstOrDefault(a=>a.FactorId == 1140)

person John S    schedule 12.08.2020    source источник
comment
Пожалуйста, отредактируйте свой вопрос, включив исходный код в качестве минимальный воспроизводимый пример, который может быть скомпилирован и протестирован другими. Затем см. заголовок meta.stackoverflow.com/questions/333952/ для вопросов, связанных с SQL.   -  person Progman    schedule 13.08.2020
comment
Код, который вы добавили, не является полным. Однако, когда я использую классы и создаю их в работоспособной среде и запускаю, они работают так, как должны. Библиотека создаст такой запрос: pastebin.com/hC3sskFP. Как видите, запрос сформирован корректно. Скорее всего, это проблема контекста, когда у вас есть элементы, которые вам не нужны, уже в контексте, и EF все равно добавит их в коллекции, но трудно сказать без MCVE. Пожалуйста, добавьте один, чтобы быть уверенным.   -  person Progman    schedule 14.08.2020


Ответы (1)


Эта часть выглядит недействительной:

.IncludeFilter(a => a.Items.Where(a => a.IsActive))

Вы используете дважды a, который не может скомпилироваться.

Возможно, по ошибке вы в настоящее время проверяете, равен ли Фактор IsActive вместо всех ваших предметов.

person Jonathan Magnan    schedule 13.08.2020
comment
Я попытался изменить запрос, как указано выше, и он по-прежнему возвращает все IsActive (будь то истина или ложь) - person John S; 14.08.2020
comment
В этом случае, Джон, сообщите об этом здесь: github.com/zzzprojects/EntityFramework-Plus/issues с работающим проектом, который воспроизводит проблему - person Jonathan Magnan; 14.08.2020
comment
Привет, Джон, у меня тоже есть вопрос, может быть, ты сможешь ответить, спасибо! stackoverflow.com/ вопросы/63461990/ - person ; 18.08.2020