我有一个与下面的例子类似的多对多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)
希望它有意义,任何指针都会受到欢迎。
答案 0 :(得分:2)
我认为你可能需要有自己的逻辑来定义关系的删除。您可以为关系定义新的enttity类型
public class KRAKPI{
public int KPA_Id{get;set;}
public int KRA_Id{get;set;}
public bool IsDeleted{get;set;}
}
然后,您可以通过在状态管理器中获取所有KRAKPI
个已删除的项目并通过更改IsDeleted
值将其设置为已修改状态来定义保存更改中的删除逻辑。
Here is a post在保存更改方法中设置已删除的值。