0

Mon code EF Le premier modèle n'est pas synchronisé avec le db. Je reçois cette erreur:ef code premier modèle pas en phase avec db

{"Invalid column name 'Type_Id1'."} 

Le champ est en fait appelé « type_id » donc je ne suis pas sûr d'où que 1 arrive. J'ai la colonne de table appelée comme Type_Id et j'ai ajouté un Type_Id dans mon modèle d'entité de type. Est-ce que vous avez une idée de la raison pour laquelle je reçois ce message d'erreur, et pourquoi je reçois 1 à la fin du nom?

Merci, Laziale

MISE À JOUR:

Ma classe Task:

public class Task 
    { 
     public Task() 
     { 
      Language = 1; 
      Grades = new HashSet<Grade>(); 
      Categories = new HashSet<Category>(); 
      Subjects = new HashSet<Subject>(); 
      Rooms = new Collection<Room>(); 
      Tools = new Collection<Tool>(); 
     } 

     [Key] 
     public int Id { get; set; } 

     public string Description { get; set; } 

     public virtual TaskType Type { get; set; } 

     public string Rules { get; set; } 

     [Required] 
     [StringLength(200), MinLength(1)] 
     public string Name { get; set; } 

     public int PreperationTime { get; set; } 

     public int InstructionTime { get; set; } 

     public int TaskTime { get; set; } 

     public int Type_Id { get; set; } 

     public string VideoLink { get; set; } 

     [Required] 
     public int Language { get; set; } 

     public int? MinimumParticipants { get; set; } 

     public int? MaximumParticipants { get; set; } 

     public int? Rating { get; set; } 

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

     public virtual ICollection<Grade> Grades { get; set; } 

     public virtual ICollection<Category> Categories { get; set; } 

     public virtual ICollection<Subject> Subjects { get; set; } 

     public virtual ICollection<Room> Rooms { get; set; } 

     public virtual ICollection<Tool> Tools { get; set; } 
    } 

classe DBContext:

public ApplicationDbContext() : base("DefaultConnection", false) 
     { 
     } 

     public DbSet<Task> Tasks { get; set; } 
     public DbSet<TaskType> TaskTypes { get; set; } 


     public static ApplicationDbContext Create() 
     { 
      return new ApplicationDbContext(); 
     } 
+0

vous ajouterons un code pour vous le modèle? – Bazinga

+0

@Bazinga - il n'y a pas de vrai modèle, les classes contiennent les propriétés comme dans la structure db, et j'ai la classe dbcontext avec les dbsets de toutes les classes. S'il vous plaît laissez-moi savoir si vous avez besoin de quelque chose de spécifique. Thx pour l'aide – Laziale

+1

poster le code pour vos classes POCO au moins, et votre constructeur de modèle dans le DbContext. – DevilSuichiro

Répondre

1

Vous devez ajouter l'attribut FK sur votre propriété de navigation. EF crée Type_Id1 car Type_Id existe déjà (bien qu'il ne puisse pas dire par convention qu'il s'agit du FK).

[ForeignKey("Type_Id")] 
public virtual TaskType Type { get; set; } 

https://msdn.microsoft.com/en-us/data/jj591583.aspx#Relationships

+0

Il est en réalité FK. Dois-je supprimer le public int Type_Id {get; ensemble; } J'ai actuellement? Merci – Laziale

+0

Non, vous laissez cela là et dites à EF que c'est votre FK afin qu'il ne crée pas Type_Id1 –