У меня есть ленивые загруженные отношения один к одному. Когда я вызываю select на нем и пытаюсь отфильтровать, где необязательный, не является нулевым, он не получает генерации предложения where для не null. Он привлекает всех пользователей, независимо от того, имеют ли они работу или нет.Lazy загружен один к одному необязательное отношение, не использующее предложение where on select
Мой пользователь:
public class User
{
public virtual Employment Employment { get; set; }
}
Мои Работа
public class Employment
{
[InverseProperty("Employment")]
public User User { get; set; }
}
Мой запрос
await (from user in _dataContext.Users
where user.Employment != null
select user).ToListAsync()
Этот способ не работает, либо:
await _dataContext.Users
.Include(t => t.Employment)
.Where(t => t.Employment != null)
.ToListAsync();
В sql, который он генерирует, предложение where просто не генерируется.
В Fluent Я настраиваю:
b.HasOne(u => u.Employment)
.WithOne(t => t.User)
.IsRequired(false);
Что я здесь делаю неправильно?
В вашем Fluent попробуйте: 'Entity() .HasOptional (u => u.Employment) .WithRequired (e => e.User);' и удалить атрибут InverseProperty: я не думаю, что вы нужно, если вы используете Fluent. Кроме того, подтвердите в своей базе данных, что поле действительно является нулевым: я подозреваю, что это не так, и поэтому генератор SQL игнорирует ваш 'where'. –
DrewJordan
У меня уже есть Свободная настройка. И это необязательно. У Занятости есть Userid –
У вас есть внешний ключ? Один к одному возможен только с внешним ключом –