2013-09-05 3 views
0

J'ai un problème étrange avec EF, DbContext et la méthode SaveChanges(). J'utilise EF 5, .NET 4.5 et un LocalDB. J'utilise Code First EF et je l'ai créé automatiquement pour moi.Entity Framework, DbContext, SaveChanges() ne fonctionne pas

Le problème est quelque chose après que l'appel de db.SaveChanges() n'est pas appelé. Voici un exemple:

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"); 

    } 

Le MessageBox ne s'affiche même pas. Une idée de ce qui se passe? Il ne lance aucune erreur, donc je ne peux même pas le déboguer.

Edit:

J'ai trouvé ce qui suit dans la sortie. Peut-être que c'est la raison. Mais pourquoi aucune exception n'est-elle levée?

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

Edit:

Je pense qu'il est de ma faute et je ne migre pas quand j'ai enlevé une propriété de mon modèle.

+0

Essayez de voir InnerException. –

+0

Form1_Load fonctionne si je place le MessageBox avant l'appel à SaveChanges() cela fonctionne. –

+0

Qu'en est-il d'InnerException? –

Répondre

0

Avez-vous essayé d'utiliser Sql Profiler pour voir si un SQL est en cours d'exécution sur votre instance LocalDB?

S'il s'agit d'une incohérence dans votre modèle, vous pouvez activer les migrations automatiques. Il y a aussi un drapeau que vous pouvez définir votre modèle contre indiquant si pour permettre la perte de données - AutomaticMigrationDataLossAllowed:

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

Automatic migrations

0

Quelle est la clé primaire de la table? Si c'est Id, alors il y a des chances que ce soit un champ auto-incrémenté. Au lieu de le mettre à zéro, laissez-le et voyez si cela fonctionne.

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

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