我正在努力获得'来自使用实体框架的数据库的实体 - 与另一个实体具有一对一的关系。有一个名为" 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; }
}
任何建议都将受到赞赏。
谢谢!
答案 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中不起作用。