2015-08-26 3 views
3

Я получаю эту странную ошибку в рамках Entity, я не могу понять, что я делаю неправильно ..Entity Framework: Недопустимое имя столбца

Мой контекст DB код.

public DbSet<Interaction> Interactions { get; set; } 

     public DbSet<User> Users { get; set; } 

     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      InteractionsDBContextConfig(modelBuilder); 

      base.OnModelCreating(modelBuilder); 
     } 

     public static void InteractionsDBContextConfig(DbModelBuilder modelBuilder) 
     { 
      modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
      // Interaction entity configuration. 
      modelBuilder.Entity<Interaction>() 
       .HasKey<int>(key => key.InteractionId); 


      modelBuilder.Entity<Interaction>() 
       .HasRequired<Form>(x => x.Form) 
       .WithMany() 
       .HasForeignKey(y => y.FormId); 


      modelBuilder.Entity<Interaction>() 
       .HasRequired<User>(x => x.User) 
       .WithMany() 
       .HasForeignKey(y => y.InteractionUserId); 


      // User entity configuration. 

      modelBuilder.Entity<User>() 
       .HasKey<int>(x => x.UserId); 

      modelBuilder.Entity<User>() 
       .Property(x => x.UserName) 
       .IsRequired() 
       .HasColumnAnnotation(
        IndexAnnotation.AnnotationName, 
        new IndexAnnotation(
         new System.ComponentModel.DataAnnotations.Schema.IndexAttribute() { IsUnique = true } 
         ) 
       ); 
     } 

Мои Entity

public class Interaction 
    { 
     public int InteractionId { get; set; } 
     public int FormId { get; set; } 
     public string InteractionName { get; set; } 
     public virtual Form Form { get; set; } 
     public int InteractionUserId { get; set; } 

     public virtual User User { get; set; } 
     public DateTime Deadline { get; set; } 
     public int InteractionType { get; set; } 
    } 

, когда я следующий

var db = dbcontext.Interactions.ToList(); 

Я получаю следующую ошибку

{ "Неверное имя столбца 'InteractionType'."}

Я не могу понять, почему ошибка появляется, почему Cant Entity framework видит мою колонку? Изменение имени столбца, похоже, не помогает.

+3

Вы мигрировали изменения? Проверьте базу данных, если в таблице есть столбец с именем «InteractionType». –

+0

@TaherRahgooy: Я обновил базу данных, и я вижу столбец с именем InteractionType. – Pratik

+0

Я подозреваю, что вы подключаетесь к другой базе данных при переносе/обновлении и во время выполнения. –

ответ

0

Не удалось найти причину появления ошибки.

я в конечном итоге сбросить все мои миграции, используя метод, упомянутый здесь: https://stackoverflow.com/a/22451879/2794980

Я предполагаю, что таблица истории миграции и переселения .cs файлов были какое-то несоответствие.

Сброс всего решены в моей проблеме.

3


Возможно, вы изменили класс взаимодействий, добавив свойство «InteractionType» и это не отразилось на базе данных, и вы должны использовать Миграции.

Открыть меню в Visual Studio View> Другие Windows> Консоль диспетчера пакетов, после чего в консоли диспетчера пакетов напишите «Включить-Миграции» и нажмите Enter.

Затем в вашем проекте будет создана папка с именем «Миграции», в которую входит класс конфигурации, и вам необходимо установить свойство AutomaticMigrationsEnabled равным «true», как показано ниже.

public Configuration() 
    { 
     AutomaticMigrationsEnabled = true; 
    } 


Вы вернетесь к Package Manager Console и написать команду "Update-Database" и ваш проект будет работать снова.

Смежные вопросы