我正忙于创建我的第一个 EF 代码优先模型,并且遇到了一个稍微令人困惑的问题。
我有许多模型类,每个模型类都继承自一个基模型类,该基模型类具有我希望在所有模型类中使用的三个公共属性。这些属性是 Id、LastUpdated 和 LastUpdatedBy。
Id是每个模型类的主键。 LastUpdated是我的“用户”模型类的外键。 LastUpdatedBy是一个日期时间字段,指示上次修改记录的时间。
所以我想要设置的是从我的基类到我的“用户”模型类的 1 对 1 外键关系,但我收到了异常:
多重性在关系“Profile_LastUpdatedByUser”中的角色“Profile_LastUpdatedByUser_Source”中无效。因为从属角色属性不是关键属性,所以从属角色的多重性的上限必须是'*'
这是我的 ModelBase 类:
public class ModelBase
{
public int Id { get; set; }
public DateTime LastUpdated { get; set; }
[ForeignKey("LastUpdatedByUser")]
[Required]
public int LastUpdatedByUserId { get; set; }
public virtual User LastUpdatedByUser { get; set; }
}
这是我的模型类之一:
public class Profile : ModelBase
{
[StringLength(25, MinimumLength=1)]
[Required(ErrorMessage="First Name is Required")]
public string FirstName { get; set; }
[StringLength(25, MinimumLength = 1)]
[Required(ErrorMessage = "Last Name is Required")]
public string LastName { get; set; }
[StringLength(25, MinimumLength = 1)]
[Required(ErrorMessage = "Email Address is Required")]
public string Email { get; set; }
public string Mobile { get; set; }
public string HomePhone { get; set; }
public string WorkPhone { get; set; }
public string ImageSource { get; set; }
public Squable.Model.Enums.MembershipType.MembershipTypeEnum MembershipType { get; set; }
}
这是我的用户类(请忽略 Password 属性,我稍后会修复它;)):
public class User : ModelBase
{
public string UserName { get; set; }
public string Password { get; set; }
public int ProfileId { get; set; }
public virtual Profile Profile { get; set; }
}
我不知道我所做的是否是最佳实践,但我可以提供一些关于如何解决问题的建议,或者只是一些正确方向的指示。