我有一个数据库,我需要进行迁移,换句话说,我需要将数据移动到另一个数据库。我使用过EF,并使用EDO自动生成类。问题出现在newDb.SaveChanges() 这是我的代码:
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 \”,table \“dbo.Claims \”,列'ID'。\ r \ n语句已终止。
答案 0 :(得分:0)
当Claims.ID不存在(或不匹配)时,您似乎试图插入新的ClaimComment。
在尝试添加已定义约束的记录之前,您需要重新排序代码以确保所有FK都存在。
答案 1 :(得分:0)
在插入ClaimComment表之前,您需要在Claim表中拥有相应的ClaimId。因此,首先确保插入主表数据,然后转到子表。