EFCore Запросы с помощью свойства Null Navigation - PullRequest
0 голосов
/ 12 февраля 2020

Итак, у меня есть ученический класс, у которого есть свойство навигации к другой таблице. Я просто хочу опросить всех студентов, которые НЕ находятся в этой таблице и находятся в этой таблице

var students = context.Students.Include(x => x.Exclusion);
var excluded = students.Where(x => x.Exclusion != null);
var included = students.Where(x => x.Exclusion == null);

Результат:

  • студенты: 9
  • исключено: 9

Так что это неправильно ... если я .ToList () студентов, исключено теперь 2, что является правильным, поэтому я предполагаю, что запросы свойств навигации не работают в EFCore, необходимо переместить в память?

var students = context.Students.Include(x => x.Exclusion);
var excluded = students.ToList().Where(x => x.Exclusion != null);
var included = students.ToList().Where(x => x.Exclusion == null);
  • студенты: 9
  • исключено: 2
  • включено: 0

... Как это 0 ?? Мы можем запросить, не является ли оно нулевым, но не является ли оно нулевым?

Похоже, что при отладке модульного теста сгенерированный запрос sql для обоих вытягивает только 2 исключенных элементы, поэтому я предполагаю, что когда я затем выполняю == null, именно поэтому он равен 0, но я понятия не имею, почему он это делает, это не то, что я прошу это сделать.

1 Ответ

0 голосов
/ 12 февраля 2020

Для кого-то еще, тип generi c, переданный в .HasForignKey, был проблемой

Это плохая ошибка

entity.HasOne(d => d.Student)
                        .WithOne(p => p.Exclusion)
                        .HasForeignKey<Student>(d => d.UserId)
                        .HasConstraintName("fk_exclusion_user");

Это исправило

entity.HasOne(d => d.Student)
                        .WithOne(p => p.Exclusion)
                        .HasForeignKey<Exclusion>(d => d.UserId)
                        .HasConstraintName("fk_exclusion_user");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...