2013-04-12 58 views
0

類我有3類:的EntityFramework InverseProperty與在中間

public class User 
{ 
    ... 
    public List<SerialHistory> SerialHistory { get; set;} 
    ... 
} 

public class SerialHistory 
{ 
    ... 
    public DateTime DateAdded { get; set; } 
    public SerialNumber SerialNumber { get; set; } 
    ... 
} 

public class SerialNumber 
{ 
    ... 
    public User User { get; set; } 
    ... 
} 

,我真的很喜歡它,這樣,當我這樣做:

user.SerialHistory.Add(new SerialHistory { 
              SerialNumber = serialNumber, 
              DateAdded = DateTime.Now 
             }); 

serialNumber.Useruser自動分配給它。

這是可能的還是超越了EntityFramework的能力?

回答

1

不,在Entity Framework中沒有特別的選項來確保這一點。 User.SerialHistorySerialNumber.User是兩種不同關係的導航屬性。你所擁有的是一種特殊的業務邏輯,它不能由數據庫中的外鍵關係強制執行,因此它不能通過實體框架的任何映射(基本上只代表外鍵關係)來強制執行。

你最好的選擇是可能的User的特殊方法:

public void AddSerialNumber(SerialNumber serialNumber) 
{ 
    serialNumber.User = this; 
    SerialHistory.Add(new SerialHistory { 
              SerialNumber = serialNumber, 
              DateAdded = DateTime.Now 
             }); 
}