2014-02-05 13 views
0

У меня есть тестовое приложение EntityFramework. Select запрос работает хорошо. Я хочу, чтобы Insert новую строку в моей базе данных. Я делаю это в следующем коде:Почему EntityFramework обновляет контекст, но не обновляет базу данных?

static void Main(string[] args) 
    { 
     using (Database1Entities context = new Database1Entities()) 
     { 
      Console.WriteLine("Current data in Table:"); 
      Console.WriteLine(); 

      var selectQuery = from person in context.Person 
           select person; 

      foreach (var person in selectQuery) 
      { 
       Console.WriteLine("{0}. {1} - {2}", person.id, person.Name, person.Age); 
      } 

      Console.WriteLine(); 
      Console.WriteLine("---------------------------------------"); 
      Console.WriteLine("Try to add the new object to a table:"); 
      Console.WriteLine(); 

      Person newItem = new Person(); 
      newItem.Name = "Tanya"; 
      newItem.Age = 20; 

      context.Person.Add(newItem); 
      context.SaveChanges(); 

      var selectQuery2 = from person in context.Person 
           select person; 

      foreach (var person in selectQuery2) 
      { 
       Console.WriteLine("{0}. {1} - {2}", person.id, person.Name, person.Age); 
      } 
     } 

     Console.ReadKey(); 
    } 

У меня есть этот выход:

Текущие данные в таблице:

  1. Влад - 20
  2. Игорь - 27

Попробуйте добавить новый объект в таблице:

  1. Влад - 20
  2. Игорь - 27
  3. Таня - 20

И эти данные в базе данных:

id name age 
1 Vlad  20 
2 Igor  27 

Выходные данные показывают, что изменения происходят, но база данных не обновляется d, изменений нет!

+2

Ваш результат, похоже, не согласен с вами. Вы пытались закрыть контекст и открыть новый, прежде чем делать свой запрос? Думаю, вы обнаружите, что Таня все еще там. –

+0

Пробовал, но никакого эффекта. Таня сохраняется в contex, но не сохраняется в базе данных! – BJladu4

+0

Это когда-нибудь работало для вас раньше? Является ли база данных той же проверкой, с которой связан ваш контекст? Вы смотрите в правый стол? Вы будете чувствовать себя глупо, когда узнаете, в чем проблема. –

ответ

2

Попробуйте сделать как этот

Context.Set<Person>().Add(newItem); 
Context.SaveChanges(); 

Edit 1

Если выше решение не работает попробуйте изменить состояние сущности, как этот

Context.Entry<Person>(newItem).State = EntityState.Added; 
Context.SaveChanges(); 
+0

К сожалению, это не сработало для меня = (( – BJladu4

+0

@ user2932802 вы проверяли как sugession Роберта Харви? Также см. Отредактированный ответ – ElectricRouge

+0

второй вариант, который я пробовал перед вопросом. Это тоже не работает = ( – BJladu4

0

ооо, это мой провал. Я искал изменения в БД, который находится в проекте, а не в папке отладки. Если я запускаю программу из папки отладки, она работает нормально.

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