Мягкое удаление в Entity Framework Отображение "многие ко многим"

У меня есть карта EF "многие ко многим", аналогичная приведенному ниже примеру. Сначала я использую код EF, поэтому мой класс отображения наследует EntityTypeConfiguration<>.

this.HasMany(a => a.KPIs)
            .WithMany()
            .Map(a =>
            {
                a.ToTable("KeyResultArea_KeyPerformanceIndicator_Mapping");
                a.MapLeftKey("KRA_Id");
                a.MapRightKey("KPI_Id");
            });

В результате этого я остался со схемой, показанной ниже.

Пока больших сюрпризов нет. - Однако я хотел бы иметь возможность мягко удалить одно из этих сопоставлений, чтобы моя желаемая схема выглядела примерно так;

dbo.KeyResultArea_KeyPerformanceIndicator_Mapping(
   KRA_Id int,
   KPI_Id int,
   Deleted bit)

Надеюсь, что это имеет смысл, любые указатели будут приветствоваться.

1 ответ

Решение

Я думаю, что вам может понадобиться собственная логика для определения удаления отношений. Вы можете определить новый тип субъекта для отношения,

public class KRAKPI{

public int KPA_Id{get;set;}
public int KRA_Id{get;set;}
public bool IsDeleted{get;set;}

}

И тогда вы можете определить логику удаления в сохранении изменений, получив все KRAKPI удаленные элементы в диспетчере состояний и установка их в измененное состояние с изменением IsDeleted значение. Вот пост о настройке удаленного значения в методе сохранения изменений.

Другие вопросы по тегам