错误:属性上的ForeignKeyAttribute无效

时间:2017-04-29 13:33:09

标签: c# entity-framework asp.net-web-api

我正在努力获得'来自使用实体框架的数据库的实体 - 与另一个实体具有一对一的关系。有一个名为" ImageId"的外键。在ContactModel上,但我收到此错误:

  

'属性'图像'上的ForeignKeyAttribute在类型上   ' Models.ContactModel'无效。外键名称' ImageId'是   在依赖类型&Model #ContactModel'上找不到。名称值   应该是以逗号分隔的外键属性名称列表。'

我显然做错了什么,但无法弄清楚是什么。

这些是我的实体类:

 [Table("Contact")]
public class ContactModel
{
    public int Id { get; set; }

    [Required]
    public string  Name { get; set; }

    [Required]
    public string Phone { get; set; }


    public string Email { get; set; }

    [ForeignKey("ImageId")]
    public virtual ImageModel Image { get; set; }
}

[Table("ContactImage")]
public class ImageModel
{
    public int Id { get; set; }

    public byte[] Image { get; set; }
}

任何建议都将受到赞赏。

谢谢!

3 个答案:

答案 0 :(得分:2)

如果我记得正确,你应该在ContactModel类上拥有外键的属性和图像本身的属性。

像这样:

[Table("Contact")]
public class ContactModel
{
    public int Id { get; set; }

    [Required]
    public string  Name { get; set; }

    [Required]
    public string Phone { get; set; }


    public string Email { get; set; }

    //Foreign key for Image
    public int ImageId { get; set; }

    [ForeignKey("ImageId")]
    public virtual ImageModel Image { get; set; }
}

[Table("ContactImage")]
public class ImageModel
{
    public int Id { get; set; }

    public byte[] Image { get; set; }
}

使用您当前的模型,您说ContactModel具有ImageModel类型的Image,并且它有一个名为ImageId的外键,但外键不存在。

答案 1 :(得分:2)

您应该在联系人模型中为FK ID添加另一个属性,并使用FK属性进行装饰,例如:

[Table("Contact")]
public class ContactModel
{
    public int Id { get; set; }

    [Required]
    public string  Name { get; set; }

    [Required]
    public string Phone { get; set; }


    public string Email { get; set; }

    [ForeignKey("Image")]
    public int ImageId { get; set; }

    public virtual ImageModel Image { get; set; }
}

答案 2 :(得分:0)

请参见https://www.learnentityframeworkcore.com/configuration/data-annotation-attributes/foreignkey-attribute。它有几种指示外键的方法。我发现指示从属类中的[ForeignKey(“ ClassName”)]在MVC5中不起作用。