这似乎是一个非常普遍的问题,但我已经尝试了所有内容,但看不出任何问题。
好像这个问题刚刚开始。完整的错误消息:
“外键组件'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; }
}
我没有做任何奇怪的事情我可以看到会导致这个问题的配置。可能是Allocation的关键是AllocationID而不只是ID吗?
到目前为止,我已尝试过: 1.从PorfolioSection中删除导航属性到Allocation。 2.将ForiegnKey属性放在AllocationID(ForeignKey(“Allocation”))而不是导航属性。
答案 0 :(得分:1)
您有一些错位的属性。如果你改变:
[ForeignKey("PortfolioSections")]
public int AllocationID { set; get; }
要:
[Key]
public int AllocationID { set; get; }
然后这应该工作正常。问题是您将Key(AllocationID是我假设的主键)声明为PortfolioSections表的ForeignKey。