ForeignKey属性无效错误

时间:2014-04-09 10:05:16

标签: c# entity-framework ef-code-first

你能帮助我吗?

namespace mvcAmerica.Models
{
    public class ArtModels
    {     
        [Key]
        public int idArt { get; set; }

        [Required(ErrorMessage="Codigo del Articulo es Requerido")]
        public string co_art { get; set; }

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

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

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

        [ForeignKey("LineaModels")]
        public int IdLinea { get; set; }

        public LineaModels Linea { get; set; }
    }

    public class LineaModels
    {        
        [Key]
        public int IdLinea { get; set; }

        [Required(ErrorMessage="Indique el Codigo")]
        public string co_lin { get; set; }

        [Required(ErrorMessage = "Indique la Descripción")]
        public string des_lin { get; set; }
    }
}

错误:

  

属性'IdLinea'上的ForeignKeyAttribute类型   'mvcAmerica.Models.ArtModels'无效。导航属性   在依赖类型上找不到“LineaModels”   'mvcAmerica.Models.ArtModels'。 Name值应该是有效的   导航属性名称。

2 个答案:

答案 0 :(得分:2)

你需要改变这个:

[ForeignKey("LineaModels")]
public int IdLinea { get; set; }
public LineaModels Linea { get; set; }

对此:

[ForeignKey("Linea")]
public int IdLinea { get; set; }
public virtual LineaModels Linea { get; set; }

需要匹配属性名称。

修改

我刚刚创建了以下应用程序,没有任何问题:

    public class ArtModels
    {
        [Key]
        public int idArt { get; set; }
        [Required(ErrorMessage = "Codigo del Articulo es Requerido")]
        public string co_art { get; set; }
        [Required]
        public string des_art { get; set; }
        [Required]
        public string modelo { get; set; }
        [Required]
        public string referencia { get; set; }
        [ForeignKey("Linea")]
        public int IdLinea { get; set; }
        public virtual LineaModels Linea { get; set; }
    }

    public class LineaModels
    {
        [Key]
        public int IdLinea { get; set; }
        [Required(ErrorMessage = "Indique el Codigo")]
        public string co_lin { get; set; }
        [Required(ErrorMessage = "Indique la Descripción")]
        public string des_lin { get; set; }
    }

    public class AppContext : DbContext
    {
        public DbSet<ArtModels> ArtModelses { get; set; }
        public DbSet<LineaModels> LineaModelses { get; set; }
    }

所以你必须遗漏别的东西吗?

答案 1 :(得分:1)

你必须改变这个:

  [ForeignKey("LineaModels")]
  public int IdLinea { get; set; }

对此:

  [ForeignKey("Linea")]
  public int IdLinea { get; set; }

ForeignKey名称必须与导航属性相同(此处为Linea)。