我忙於創建我的第一個EF代碼第一個模型,並且遇到了一個稍微令人困惑的問題。外部關鍵關係EF代碼優先
我有許多模型類,每個模型類都繼承自一個基本模型類,它具有三個我想在所有模型類中使用的公共屬性。這些屬性是Id,LastUpdated和LastUpdatedBy。
Id是每個模型類的主鍵。 LastUpdated是我的'用戶'模型類的外鍵。 LastUpdatedBy是一個日期時間字段,指示記錄上次修改時間。
所以我想設置爲我的基類,以我的「用戶」模型類的1比1外鍵關係,但我收到了異常:
多重不合法角色'Profile_LastUpdatedByUser_Source' 處於「Profile_LastUpdatedByUser」關係中。由於相關 角色屬性都不是關鍵屬性,綁定的 多重從屬角色的上必須是「*」
這是我的模型庫類:
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; }
}
這是我的用戶類別(請忽略密碼屬性,我會解決以後;)):
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; }
}
我不知道我在做什麼是最好的做法,但我可以做一些建議,以便如何解決問題或者只是一些指向正確的方向。
謝謝,這沒有辦法。必須仍然使用[ForeignKey(「LastUpdatedByUserId」)]註釋該屬性。不過我想現在可能會遇到另一個問題!不確定這個代碼的第一件事是否值得麻煩,首先模型和DB首先看起來更有吸引力。 – Damon