属性上的实体框架ForeignKeyAttribute是无效的
本文关键字:无效 ForeignKeyAttribute 实体 属性 框架 | 更新日期: 2023-09-27 18:12:24
我得到这个错误:
类型上的属性'SubdivisionsHOA'的ForeignKeyAttribute"HealthOfAustralia.DAL.Models。contentarticlehoassubdivision '不是有效的。的外键名称"SubdivisionHOAId"没有找到依赖类型"HealthOfAustralia.DAL.Models.SubdivisionHOA"。这个名字值应该是一个逗号分隔的外键属性名称列表。
下面是模型类:
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; }
消息非常清楚:您指定SubdivisionHOAId
作为SubdivisionHOA
类上的外键属性名称,该属性不存在。你可能想输入Id
。
来自文档:
注释可以放在外键属性上并指定关联的导航属性名称,也可以放在导航属性上并指定关联的外键名称。
从Name属性的描述:
如果您将foreignkey属性添加到导航属性中,您应该指定关联的外键的名称。如果导航属性有多个外键,请使用逗号分隔外键名称列表。
这里用的是第二种用法。SubdivisionsHOA
被认为是一个导航属性,所以编译器在SubdivisionHOA
类上查找名为SubdivisionHOAId
的外键。