簡體   English   中英

實體框架ForeignKeyAttribute在屬性…在類型…上無效

[英]Entity framework ForeignKeyAttribute on property … on type … is not valid

我收到此錯誤:

類型'HealthOfAustralia.DAL.Models.ContentArticleHOAsubdivision'上屬性'SubdivisionsHOA'的ForeignKeyAttribute無效。 在從屬類型“ HealthOfAustralia.DAL.Models.SubdivisionHOA”上找不到外鍵名稱“ SubdivisionHOAId”。 Name值應該是逗號分隔的外鍵屬性名稱列表。

這是模型類:

public partial class ContentArticleHOAsubdivision
{
    public int Id { get; set; }
    public long ContentArticleId { get; set; }
    public short SubdivisionHOAId { get; set; }

    [ForeignKey("ContentArticleId")]
    public virtual ContentArticleHOA ContentArticleHOA { get; set; }
    [ForeignKey("SubdivisionHOAId")]
    public virtual ICollection<SubdivisionHOA> SubdivisionsHOA { get; set; }
}

public partial class SubdivisionHOA
{
    [Key, ForeignKey("TopTierDivisionHOA")]
    public short Id { get; set; }
    public string Name { get; set; }

    public virtual TopTierDivisionHOA TopTierDivisionHOA { get; set; }
}

我究竟做錯了什么?

您需要選擇one to many關系並使用以下代碼:

public class ContentArticleHOAsubdivision
{
     ...Comment this
     //public short SubdivisionHOAId { get; set; }
     ...
     [InverseProperty(" create property for ContentArticleHOAsubdivision on SubdivisionHOA")]
     public virtual ICollection<SubdivisionHOA> SubdivisionsHOA { get; set; }
}

或者one to one與這一個:

[ForeignKey("SubdivisionHOA")]
public short SubdivisionHOAId { get; set; }

public virtual SubdivisionHOA SubdivisionsHOA { get; set; }

消息很清楚:您在SubdivisionHOA類上將SubdivisionHOAId指定為前例鍵屬性名稱,該名稱不存在。 您可能打算輸入Id

文檔中

注釋可以放在外鍵屬性上並指定關聯的導航屬性名稱, 也可以放在導航屬性上並指定關聯的外鍵名稱。

並從Name屬性的描述中:

如果將ForeigKey屬性添加到導航屬性,則應指定關聯的外鍵的名稱 如果導航屬性具有多個外鍵,請使用逗號分隔外鍵名稱列表。

這是這里的第二種用法。 SubdivisionsHOA被視為導航屬性,因此編譯器會在SubdivisionHOA類上查找名為SubdivisionHOAId的外鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM