我需要創建一個關係,我有一個鏈接到地址表的用戶表。問題是我需要地址表來存儲歷史地址。用戶也可能根本沒有地址。實體框架4.1代碼優先 - 如何在兩個表之間創建兩個不同的關係
public class user
{
public virtual int ID { get; set; }
...
public virtual int? AddressId { get; set; }
[ForeignKey("AddressId")]
public virtual Address CurrentAddress { get; set; }
public virtual ICollection<Address> HistoricAddresses { get; set; }
}
public class Address
{
public virtual int ID { get; set; }
...
}
我想盡各種辦法來得到這個工作,得到了各種錯誤,如把用戶和地址之間的另一個表:
public class HistoricAddress
{
public virtual int ID { get; set; }
public Address HistoricAddress { get; set; }
}
public class user
{
public virtual int ID { get; set; }
public virtual Address CurrentAddress { get; set; }
public virtual ICollection<HistricAddress> HistoricAddresses { get; set; }
...
}
等各種方式,但是這也引發了錯誤。必須有一個適當的方式來做到這一點。我得到的最後一個錯誤是:
「System.Data.Entity.Infrastructure.DbUpdateException:更新條目時發生錯誤,請參閱內部異常的詳細信息---> System.Data.UpdateException:發生錯誤 - > System.InvalidOperationException:ReferentialConstraint中的依賴屬性映射到商店生成的列,Column:'ID'。「
你的第一個代碼片段有什麼問題? Code-First約定應該在沒有進一步配置的情況下正確映射'User'和'Address'之間的兩個關係,不是嗎? – Slauma