外键组件“X”不是类型“Y”上的声明属性。确认未明确排除

时间:2015-06-10 17:50:04

标签: c# entity-framework

这似乎是一个非常普遍的问题,但我已经尝试了所有内容,但看不出任何问题。

好像这个问题刚刚开始。完整的错误消息:

“外键组件'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”))而不是导航属性。

1 个答案:

答案 0 :(得分:1)

您有一些错位的属性。如果你改变:

[ForeignKey("PortfolioSections")]
public int AllocationID { set; get; }

要:

[Key]
public int AllocationID { set; get; }

然后这应该工作正常。问题是您将Key(AllocationID是我假设的主键)声明为PortfolioSections表的ForeignKey。