2012-08-01 110 views
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"); 
      }); 

由於這個即時通訊留下來的架構如下所示。

enter image description here

到目前爲止沒有大的驚喜。 - 但是我希望能夠軟刪除這些映射之一,所以我的所需的模式看起來像這樣;

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

希望它是有道理的,任何指針將是最受歡迎的。

回答

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在保存更改方法中設置已刪除的值。

+0

是的這是唯一的方法,我發現要做到這一點 – 2012-08-01 03:50:38

+0

嗯,好吧,所以只是爲了我的理解,所以我可以映射這個。域模型關係看起來像KRA.KRAKPI.KPIs.FirstOrDefault()。名稱以前我有KRA.KPIs.FirstOrDefault()。Name?感謝您的回覆 – Christo 2012-08-01 05:27:45

+0

是的..我認爲這樣:( – 2012-08-01 05:32:28