我正在學習MVC並堅持創建外鍵。我一直通過使用其類中的主鍵的相同名稱來創建外鍵。所以,我有以下簡單的模型,具有不同名稱的實體框架外鍵
public class User
{
[Key]
public Guid ID { get; set; }
public string Email { get; set; }
public string Password { get; set; }
}
和LoginHistory的另一種模式是,
public class LoginHistory
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public Guid UserID { get; set; }
public DateTime AttemptDateTime { get; set; }
}
現在這一部分,我知道,如果我在LoginHistory車型使用用戶名,然後它將作爲外鍵被創建。但是如果我想在模型LoginHstory中將該列命名爲CustomUser,該怎麼辦?
我已經檢查這個問題, Asp.net mvc entity framework code first associate foreign key with different name
據其回答我的模式將是這樣的,如果我想使用不同的名稱作爲主鍵,
public class LoginHistory
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public Guid CustomUser { get; set; }
[ForeignKey("CustomUser")]
public virtual User User { get; set; }
}
根據上述解決方案,我使用關聯和導航屬性。如果我只想使用該協會而不使用導航屬性怎麼辦?創建具有不同名稱的外鍵的經驗法則是什麼?除了選擇關聯數據之外,還需要導航屬性?
流利的api可以讓許多事情更容易完成,但我喜歡用Data Annotations來做事情,或者最初我只想完全理解Data Annotations。謝謝
我希望我可以標記兩個答案作爲答案,但正如你直接回答我的問題,導航屬性必須在我的情況下,所以我將這個標記爲答案。我的困惑是,我可以使用導航屬性獨立,但如果使用不同的名稱,那麼它是必須的。那就是我從你的回答中瞭解到的。 –