实体框架上的软删除多对多映射

时间:2012-08-01 03:40:30

标签: entity-framework ef-code-first

我有一个与下面的例子类似的多对多EF图。我使用EF代码第一种方法,所以我的映射类继承了EntityTypeConfiguration<>。

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

由于这个我留下了下面显示的架构。

enter image description here

到目前为止没有太大的惊喜。 - 但是我希望能够软删除其中一个映射,以便我的所需的架构看起来像这样;

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

希望它有意义,任何指针都会受到欢迎。

1 个答案:

答案 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在保存更改方法中设置已删除的值。