外键组件'X'不是类型'Y'上的声明属性.确认它没有被显式排除
本文关键字:属性 确认 排除 声明 组件 类型 | 更新日期: 2023-09-27 17:54:55
这似乎是一个相当普遍的问题,但我已经尝试了所有方法,并没有看到任何问题。
好像这个问题今天才开始。完整的错误信息:
"外键组件'AllocationID'不是类型'PortfolioSection'上声明的属性。验证它没有被显式地排除在模型之外,并且它是一个有效的原语属性。"
模型:
public class PortfolioSection
{
.... some stuff
public int AllocationID { set; get; }
[ForeignKey("AllocationID")]
public virtual Allocation Allocation { get; set; }
.... More stuff
}
public class Allocation
{
... Some stuff
[ForeignKey("PortfolioSections")]
public int AllocationID { set; get; }
public string Name { set; get;}
public string Color { set; get; }
public int SortOrder { set; get; }
public virtual List<PortfolioSection> PortfolioSections { get; set; }
}
我没有做任何奇怪的w/配置,我可以看到,这将导致这个问题。分配的关键是AllocationID,而不仅仅是ID?
到目前为止,我试过:1. 移除从portfolio section到Allocation的导航属性。2. 把ForeignKey属性放在AllocationID (ForeignKey("Allocation"))上,而不是导航属性
您有几个属性放错了地方。如果您更改:
[ForeignKey("PortfolioSections")]
public int AllocationID { set; get; }
:
[Key]
public int AllocationID { set; get; }
那么这应该可以正常工作。问题是您将键(AllocationID是我假设的主键)声明为PortfolioSections表的ForeignKey。