Мягкое удаление в 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
значение. Вот пост о настройке удаленного значения в методе сохранения изменений.