实体框架6 - 外键问题

时间:2014-07-10 08:46:25

标签: c# entity-framework

我使用EF6有以下模型,我试图链接一个' ContentArticleHOAsubdivision'实体到' SubdivisionHOA':

public partial class ContentArticleHOAsubdivision
{
    public int Id { get; set; }
    [ForeignKey("ContentArticleHOA")]
    public long ContentArticleId { get; set; }
    [ForeignKey("SubdivisionsHOA")]
    public short SubdivisionId { get; set; }

    public virtual ContentArticleHOA ContentArticleHOA { get; set; }
    public virtual ICollection<SubdivisionHOA> SubdivisionsHOA { get; set; }
}

public partial class SubdivisionHOA
{
    public short Id { get; set; }
    public string Name { get; set; }
    [ForeignKey("TopTierDivisionHOA")]
    public byte TopTierDivisionId { get; set; }

    public virtual TopTierDivisionHOA TopTierDivisionHOA { get; set; }
}

我收到错误:

外键组件&#39; SubdivisionId&#39;不是类型&#39; SubdivisionHOA&#39;的声明属性。验证它是否未从模型中明确排除,并且它是有效的原始属性。

&#39; Id&#39; SubdivisionHOA中的财产我想尝试链接,需要命名&#39; Id&#39;因为它是数据库中实际列的名称,所以我不确定我需要做什么?

我已尝试在[InverseProperty("Id")]属性之前添加[ForeignKey],但会收到相同的错误。

1 个答案:

答案 0 :(得分:1)

基本上,Entity Framework中的外键使用情况如下:

public partial class ContentArticleHOAsubdivision
{
    public int Id { get; set; }

    ...

    public virtual ICollection<SubdivisionHOA> SubdivisionsHOAs { get; set; }
}

public partial class SubdivisionHOA
{
    public short Id { get; set; }

    ...

    public int ContentArticleHOAsubdivisionId { get; set; }

    [ForeignKey("ContentArticleHOAsubdivisionId")]
    public virtual ContentArticleHOAsubdivision ContentArticleHOAsubdivision { get; set; }
}

只是基于你的代码,我丢弃了一些未知的东西。