2013-09-05 2 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가 표시되지 않습니다. 무슨 일있어? 어떤 오류도 발생시키지 않으므로 디버깅조차 할 수 없습니다.

편집 :

은 내가 출력에 다음을 발견했다. 어쩌면 그것이 이유 일 것입니다. 그러나 왜 예외가 던져지지 않습니까?

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

편집 :

나는 그것이 내 잘못이야 내가 내 모델에서 속성을 제거 할 때 마이그레이션하지 않았다 생각합니다.

+0

InnerException을보십시오. –

+0

SaveChanges() 호출 전에 MessageBox를 배치하면 Form1_Load가 작동합니다. –

+0

InnerException은 어떻습니까? –

답변

0

Sql 프로필러를 사용하여 LocalDB 인스턴스에 대해 SQL이 실행되고 있는지보십시오.

모델에 불일치가있는 경우 자동 마이그레이션을 사용할 수 있습니다. 데이터 손실을 허용할지 여부를 나타내는 모델에 대해 설정할 수있는 플래그도 있습니다을 - AutomaticMigrationDataLossAllowed :

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

Automatic migrations

0

테이블의 기본 키는 무엇입니까? ID라면 자동 증가 필드입니다. 그것을 0으로 설정하는 대신, 그냥두면 작동하는지 볼 수 있습니다.

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

     db.Groups.Add(g); 
     db.SaveChanges(); 
} 
관련 문제