2013-09-05 4 views
0

У меня странная проблема с EF, DbContext и методом SaveChanges(). Я использую EF 5, .NET 4.5 и LocalDB. Я использую Code First EF и создаю для него базу данных автоматически для меня.Entity Framework, DbContext, SaveChanges() Не работает

Проблема заключается в том, что вызов db.SaveChanges() не вызван. Вот пример:

private void Form1_Load(object sender, EventArgs e) 
    { 

     using (var db = new DataLayer.DataContext()) 
     { 
      Group g = new Group { 
       Id = 0, 
       Gid = "019282", 
       Name = "Admin" 
      }; 

      db.Groups.Add(g); 
      db.SaveChanges(); 
     } 

     MessageBox.Show("Testing"); 

    } 

MessageBox даже не отображается. Любая идея, что происходит? Это не вызывает ошибок, поэтому я даже не могу его отладить.

Edit:

Я нашел следующее на выходе. Возможно, это и есть причина. Но почему это не исключение?

A first chance exception of type 'System.InvalidOperationException' occurred in EntityFramework.dll 

Edit:

Я думаю, что это моя вина, и я не мигрировали, когда я удалил свойство из моей модели.

+0

Попробуйте увидеть InnerException. –

+0

Form1_Load работает, если я помещаю MessageBox перед вызовом SaveChanges(). –

+0

Как насчет InnerException? –

ответ

0

Вы пытались использовать Sql Profiler для проверки того, выполняется ли какой-либо SQL в вашем экземпляре LocalDB?

Если это несоответствие в вашей модели, вы можете включить автоматическую миграцию. Существует также флаг можно установить на модели, показывающей, чтобы потери данных - AutomaticMigrationDataLossAllowed:

Database.SetInitializer(new MigrateDatabaseToLatestVersion<DataContext, Configuration>()); 

Automatic migrations

0

Что является первичным ключом таблицы? Если это Id, то, скорее всего, это поле с автоматическим приращением. Вместо того, чтобы устанавливать его на ноль, просто оставьте его и посмотрите, работает ли он.

using (var db = new DataLayer.DataContext()) 
{ 
    Group g = new Group { 
      Gid = "019282", 
      Name = "Admin" 
     }; 

     db.Groups.Add(g); 
     db.SaveChanges(); 
} 
Смежные вопросы