[英]Foreign key invalid with Entity Framework
所以我试图用外键创建一个表,但它总是说它找不到外键。 继承人代码:
public class Tecnologies
{
[Key]
public int TecId { get; set; }
[Required]
public String Name { get; set; }
}
这个工作,然后我尝试创建这个:
public class UserTecnologies
{
[Key]
public int UserTecId { get; set; }
[ForeignKey("Id")]
public UserProfile User { get; set; }
[ForeignKey("TecId")]
public virtual Tecnologies Tecnology { get; set; }
[Required]
public int Rating { get; set; }
}
它给了我错误:
类型为“ ESW_CloddOffice.Models.UserTecnologies”的属性“ Tecnology”上的ForeignKeyAttribute无效。 在依赖类型“ESW_CloddOffice.Models.UserTecnologies”上找不到外键名称“TecId”。 Name值应该是以逗号分隔的外键属性名称列表。
名字是正确的,我缺少什么?
好的,我发现我做错了什么。 正确的代码如下:
public class UserTecnologies
{
[Key]
public int UserTecId { get; set; }
[ForeignKey("UserProfile")]
public virtual int UserProfileId { get; set; }
[ForeignKey("Tecnology")]
public virtual int TecnologyId { get; set; }
public virtual Tecnologies Tecnology { get; set; }
public virtual UserProfile UserProfile { get; set; }
[Required]
public int Rating { get; set; }
}
正在以错误的方式创建外键。
ForeignKey
属性要求实体上的实际属性与您传入的名称匹配。它不仅告诉EF在数据库级别调用该键的内容。
您要么实际上需要添加一个TecId
属性:
public int TecId { get; set; }
或者使用流畅的配置,而不是:
modelBuilder.Entity<UserTechnologies>()
.HasRequired(c => c.Technology)
.WithMany()
.Map(m => m.MapKey("TecId"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.