0

하나의 데이터베이스가 있고 마이그레이션을 수행해야합니다. 즉 다른 데이터베이스로 데이터를 이동해야합니다. EF를 사용하고 EDO로 클래스를 자동 생성했습니다. 문제는 newDb.SaveChanges()에서 occures 여기 내 코드입니다 : 나는 그것을 실행하면마이그레이션을 수행 할 때 System.Data.Entity.Infrastructure.DbUpdateException을 피하는 방법

 var oldDb = new oldBAEntity(); 
     var newDb = new NewDbContextEntities(); 

     var query2 = oldDb.R_ClaimHistory.ToList(); 

     foreach (var sourceObj in query2) 
     { 
      ClaimComment targetobj = new ClaimComment(); 

      targetobj.ClaimId = (int)sourceObj.IdClaim; 
      targetobj.Comment = sourceObj.HistClaimDescription; 
      targetobj.UserCreated = (int)sourceObj.IdUserCreated; 
      targetobj.DateCreated = sourceObj.DateCreated; 

      newDb.ClaimComments.Add(targetobj); 
     } 
     newdb.SaveChanges(); 

,이 오류가 점점 오전 :

System.Data.Entity.Infrastructure.DbUpdateException을

InnerException :

INSERT 문이 FOREIGN KEY 제약 조건 "FK_ClaimComments_Claims \"과 충돌했습니다. 데이터베이스 \ "Toni-Bank-DB \", 테이블 \ "dbo.Claims \", 열 'ID'에서 충돌이 발생했습니다. \ n \ n 명세서가 종료되었습니다.

답변

0

Claims.ID가 없거나 일치하지 않는 경우 새 ClaimComment를 삽입하려고 시도하는 것 같습니다.

제약 조건이 정의 된 레코드를 추가하기 전에 모든 FK가 존재하도록 코드를 다시 정렬해야합니다.

+0

예, Chris. 나는 30 분 동안 멈춰서 생각했다. 나는이 테이블을 채우는 중임을 알았고 Claims 테이블은 비어 있었기 때문에 첫 번째 Claims 테이블을 채운 다음 ClaimsComments 테이블을 채울 때 오류가 다시 표시되지 않습니다. – Toni

0

ClaimComment 테이블에 삽입하기 전에 Claim 테이블에 해당 ClaimId가 있어야합니다. 먼저 마스터 테이블 데이터가 삽입되었는지 확인한 다음 하위 테이블로 이동하십시오.