2015-09-10 188 views
0

我對EF的數據庫設計非常陌生,並試圖瞭解如何將我的實體模型正確轉換爲數據庫表。多個表的一對多關係

我有以下兩類:

public class Test 
{ 
    public int ID { get; set; } 
    // ... more data 
    ICollection<Exception> Exceptions { get;set; } 
} 

public class Measurement 
{ 
    public int ID { get; set; } 
    // ... more data 
    ICollection<Exception> Exceptions { get;set; } 
} 

所以我的兩個類測試與測量將包含Exception對象列表

我的計劃是落實以下列方式異常:

public class Exception 
{ 
    public int ID { get; set; } 
    // ... more data 

    /// <summary> 
    /// Reference to Test to create One-To-Many relationship 
    /// </summary> 
    public Test Test{ get; set; } 

    /// <summary> 
    /// Foreign key of Test table 
    /// </summary> 
    public int TestID { get; set; } 

    /// <summary> 
    /// Reference to Measurement to create One-To-Many relationship 
    /// </summary> 
    public Measurement Measurement { get; set; } 

    /// <summary> 
    /// Foreign key of Measurement table 
    /// </summary> 
    public int MeasurementID { get; set; } 
} 

這樣,我的每個Exception實體都將具有測試和測量表的外鍵,但是在每個Exception實體中測試或測量將被呈現,因爲一個例外不能來自測試或測量。

這有效,但我想知道如果這是正確的路要走,或者如果有更好的做法。

感謝

+0

你問的代碼審查確定測試

對不起? – Biscuits

+0

不是代碼審查,而是更多的策略。 – inside

+0

可能希望使測試和測量屬性爲虛擬。 –

回答

0

虛擬的EF認同「虛擬ICollection的」,只有「虛擬對象」連接

許多 和 一個

測試有很多測量 與測量有測試

public class Test 
{ 
    public int Id { get; set; } 
    public string Testname { get; set; } 
    public virtual ICollection<Measurement> Measurements { get; set; } 
} 
public class Measurement 
{ 
    public int Id { get; set; } 
    public int FullMeasurement { get; set; } 
    public virtual Test Test { get; set; } 
} 

並且您有一個DataAnotation [ForeignKey的( 「TestRefId」) 用於爲例:

[ForeignKey("TestRefId")] 
public virtual Test Test { get; set; } 

表去TestRefId爲我的英語