2011-06-01 26 views
1

找到合適的標題有點難。
我認爲這是一個基本問題,但我找不到解決方案。EF 4.1跳過會員收藏詞典表

public class Car 
{ 
    ... 
    public ICollection<Parts> Parts { get; set; } 
} 

public class Parts 
{ 
    ... 
} 

該應用程序具有用於零件的「存儲庫」或「目錄」。 當我編輯汽車實體時,我可以從此存儲庫中選擇以添加零件。

我有兩個問題,默認映射:

  1. 我希望能夠刪除目錄中的一部分,而不從 車將其刪除。
  2. 如果我只手動添加到汽車的一部分,它會出現在「目錄」,不應該。

換句話說欲單獨零件分貝表:
1.對於其中有關特定汽車(轎車類的部件(集合)部件) 2.對於目錄中的零件從

選擇

在此先感謝

回答

2

向Parts實體添加一列名爲「ShowInCatalog」的列,並將其設置爲0,以使您不希望顯示在您的目錄中(因此目錄將執行查詢以獲取所有內容該值在1)。

+0

感謝您的回覆。 好吧,這很明顯,但它違背了代碼第一的方法。 我想繼續保持最小的修改模型,因爲持久性。我不想在我的模型中實現任何與持久性相關的業務邏輯。 我可以想出一些映射,它會告訴EF將表中的汽車相關零件收集成員存儲在表「汽車配件」中,並在零件表中存儲零件的獨立實例。 如果我們認爲從面向對象的角度來看,這是微不足道的,在我看來,集合成員是不同的實體,而不是其他 – Sandor 2011-06-01 16:59:55

+0

集合成員他們只是共享一個共同的結構(類型) – Sandor 2011-06-01 17:01:32

+0

@Sandor它確實,但它是很好的SQL表設計。抽象總是以某種方式存在漏洞,而你打算做的事情將會在其他地方產生很多額外的複雜性,除了「代碼優先處理純度」之外沒有任何收穫。一部分是一部分,無論他們是否在汽車裏,他們都是同一件事。因此它是一個實體。這也避免了重複。有兩個,如果你拿一個零件並把它放在一個汽車裏(同時還在目錄中),你現在有兩個零件用於同一零件。這不是一個好主意。 – Tridus 2011-06-01 17:35:50