我有一个多对多 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)
希望这是有道理的,非常欢迎任何指点。
最佳答案
我认为您可能需要有自己的逻辑来定义关系的删除。您可以为关系定义新的实体类型,
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关于在保存更改方法中设置删除的值。
关于entity-framework - Entity Framework 多对多映射上的软删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11752265/