2

我有一个多对多的 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)

希望这是有道理的,任何指针都会受到欢迎。

4

1 回答 1

2

我认为您可能需要有自己的逻辑来定义关系的删除。您可以为关系定义新的实体类型,

public class KRAKPI{

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

}

然后您可以通过在状态管理器中获取所有已删除的项目并通过更改值 KRAKPI将它们设置为修改状态来定义保存更改中的删除逻辑。这是一篇关于在保存更改方法中设置已删除值的帖子。IsDeleted

于 2012-08-01T03:49:50.573 回答