繁体   English   中英

外键对实体框架无效

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM