2016-10-13 12 views
1

創建新應用程序時遇到了問題。該應用程序是關於在特定日期輸入的新員工。由於他們需要一些硬件(如筆記本電腦,鍵盤等),我們希望提供關於未來幾天即將到來的所有新員工的概述。使EF使用具有附加屬性的m:n表

所以有以下型號:

項:

public class Entry{ 
public IEnumerable<Hardware> Hardware {get; set;} 
... 
} 

硬件:

public class Hardware{ 
    public string Name {get; set;} 
    public OrderStatus Status {get; set} 
} 

OrderStatus:

public enum OrderStatus{ 
    Nothing, 
    Ordered, 
    Arrived, 
    Ready 
} 

起初,這似乎是很好的,因爲每一個條目我想創建一個新的硬件數據集(一對多)。現在我決定維護一個硬件列表,只需引用硬件到條目(多對多)。問題是OrderStatus綁定到硬件,所以當一個Hardware被引用到許多Employees並且Orderstatus被更改時,它將在所有條目中被更改。

我認爲適當的解決方案是使用第三個表(Entry_Id,Hardware_Id,OrderStatus)。通過流暢的API,可以將關係映射到新的(第三個)表中,但無法向其添加新屬性(OrderStatus)。這甚至有可能嗎?

+0

我認爲你應該創建第三個實體** EntryHardwareStatus **(名字可能會更好,但現在不相關),它與Entry和Hardware都有關係,並且還包含OrderStatus。只是用流暢的api映射'm:n'關係是不夠的 –

+0

所以除了創建一個新的模型沒有別的辦法嗎?我不需要在Context + new Repository中爲這個模型創建新的屬性嗎?沒有辦法用流利api解決這個問題嗎? – C4p741nZ

回答

2

按本answer

這不是可以創建定製的連接表一 多對一對多的關係。在多對多關係中,EF在內部管理 連接表並隱藏。這是您的模型中沒有實體類 的表格。爲了與這樣的額外 性連接表工作,你必須創建實際上是兩個一個一對多的關係

請參閱鏈接的答案更多的細節。

+0

不錯,但這個問題是一個愚蠢的:) –

+0

我今天沒有標誌:o –