我收到此错误:
类型上属性'SubdivisionsHOA'的ForeignKeyAttribute 'HealthOfAustralia.DAL.Models.ContentArticleHOAsubdivision'不是 有效。没有找到外键名称'SubdivisionHOAId' 依赖类型'HealthOfAustralia.DAL.Models.SubdivisionHOA'。名字 value应该是以逗号分隔的外键属性名称列表。
以下是模型类:
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; }
}
我做错了什么?
答案 0 :(得分:2)
您需要选择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; }
答案 1 :(得分:1)
消息非常明确:您指定SubdivisionHOAId
作为SubdivisionHOA
类上的foregin键属性名称,该名称不存在。您可能打算输入Id
。
可以将注释放在外键属性上,并指定关联的导航属性名称或放置在导航属性上,并指定关联的外键名称。
从Name属性的描述:
如果将ForeigKey属性添加到导航属性,则应指定关联外键的名称。如果导航属性具有多个外键,请使用逗号分隔外键名称列表。
这是适用于此的第二次使用。 SubdivisionsHOA
被视为导航属性,因此编译器会在SubdivisionHOAId
类上查找名为SubdivisionHOA
的外键。