我正在学习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。谢谢
我希望我可以标记两个答案作为答案,但正如你直接回答我的问题,导航属性必须在我的情况下,所以我将这个标记为答案。我的困惑是,我可以使用导航属性独立,但如果使用不同的名称,那么它是必须的。那就是我从你的回答中了解到的。 –