Почему EF Core предупреждает, когда требуемая родительская сущность фильтруется глобальным фильтром запросов?C#

Место общения программистов C#
Anonymous
Почему EF Core предупреждает, когда требуемая родительская сущность фильтруется глобальным фильтром запросов?

Сообщение Anonymous »

Я использую EF Core с обратимым удалением с помощью глобальных фильтров запросов.
Вот упрощенная модель:

Код: Выделить всё

    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 считает это проблемой?
Как правильно обрабатывать необходимые связи при использовании глобальных фильтров запросов?>

Вернуться в «C#»