![](/img/trans.png)
[英]Code First The ForeignKeyAttribute on property '' on type '' is not valid. EF 6.1.3
[英]Code First The ForeignKeyAttribute on property '' on type '' is not valid. Entity Framework
我正在嘗試創建代碼首先接近具有不同外鍵的用戶表,但它給了我這條消息的錯誤:
“類型‘EFNetflixAssignment.User’的屬性‘discount_id’的ForeignKeyAttribute無效。在依賴類型‘EFNetflixAssignment.Discount’上找不到外鍵名稱‘Discounts’。名稱值應該是逗號分隔的外鍵列表關鍵屬性名稱。”
這是我的用戶表代碼
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Required]
public virtual int Id { get; set; }
[Required]
public virtual bool Status { get; set; }
[Required]
[MaxLength(255)]
public virtual string Email { get; set; }
[Required]
[MaxLength(255)]
public virtual string Password { get; set; }
[Required]
public virtual List<Payment_type> Payment_Types { get; set; }
[Required]
public virtual bool Activated { get; set; }
[Required]
[ForeignKey("Discounts")]
public virtual List<Discount> discount_id { get; set; }
}
這是折扣碼
public class Discount
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Required]
public virtual int Id { get; set; }
[Required]
[MaxLength(255)]
public virtual string discount_type { get; set; }
[Required]
public virtual decimal discount_amount { get; set; }
}
有人可以幫我解決這個問題嗎?
ForeignKey-Attribute 不會像這樣工作。 如果您不關心數據庫中外鍵的名稱,則不需要此屬性。 EF 將自動為導航屬性創建外鍵。
如果要指定此鍵的名稱,則需要用戶 class 中的另一個屬性,該屬性包含外鍵,然后您可以通過兩種可能的方式連接這兩個屬性:
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Required]
public virtual int Id { get; set; }
[Required]
public virtual bool Status { get; set; }
[Required]
[MaxLength(255)]
public virtual string Email { get; set; }
[Required]
[MaxLength(255)]
public virtual string Password { get; set; }
[Required]
public virtual List<Payment_type> Payment_Types { get; set; }
[Required]
public virtual bool Activated { get; set; }
[Required]
[ForeignKey("Discounts")]
public List<int> Discount_Ids { get; set; }
[Required]
public virtual List<Discount> Discounts { get; set; }
或者像這樣:
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Required]
public virtual int Id { get; set; }
[Required]
public virtual bool Status { get; set; }
[Required]
[MaxLength(255)]
public virtual string Email { get; set; }
[Required]
[MaxLength(255)]
public virtual string Password { get; set; }
[Required]
public virtual List<Payment_type> Payment_Types { get; set; }
[Required]
public virtual bool Activated { get; set; }
[Required]
public List<int> Discount_Ids { get; set; }
[Required]
[ForeignKey("Discount_Ids")]
public virtual List<Discount> Discounts { get; set; }
這是因為每當您想使用數據注釋為外鍵設置特定名稱時,您都需要為該鍵添加一個屬性並將其與導航屬性連接起來。
但請注意,在您的數據庫中,外鍵將設置在折扣表中,因為在一對多關系中,多方的表總是將 1 方的主鍵作為關系的外鍵。
希望這能解決您的問題,如果您還有其他問題,請告訴我:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.