Вот упрощенная модель:
Код: Выделить всё
public class User
{
public Guid Id { get; set; }
public bool IsDeleted { get; set; }
public UserCredentials Credentials { get; set; }
}
public class UserCredentials
{
public Guid Id { get; set; }
public Guid UserId { get; set; }
public User User { get; set; }
}
Код: Выделить всё
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity()
.HasQueryFilter(u => !u.IsDeleted);
modelBuilder.Entity()
.HasOne(c => c.User)
.WithOne(u => u.Credentials)
.HasForeignKey(c => c.UserId)
.IsRequired();
}
Код: Выделить всё
var result = await _context.UserCredentials
.Include(c => c.User)
.ToListAsync();
Когда пользователь мягко удален (IsDeleted = true), EF Core предупреждает, что требуемая связь может быть нарушена из-за глобального фильтра.
Почему EF Core считает это проблемой?
Как правильно обрабатывать необходимые связи при использовании глобальных фильтров запросов?>