DbContext.SaveChanges()在循环中导致DbUpdateException

时间:2012-12-31 22:52:39

标签: entity-framework-5 foreign-key-relationship dbcontext savechanges

我有一个创建一个负责插入标题/明细记录的对象的进程。如果我运行代码自己插入表中,那么每件事都运行良好。但是,当我将该代码称为循环中的单独类时我 得到例外:

  

System.Data.Entity.Infrastructure.DbUpdateException未处理
  Message = INSERT语句与FOREIGN KEY约束“FK_CAS_ClaimsAdjustment_Header835”冲突。冲突发生在数据库“ERA835DB”,表“dbo.Header835”,列“TRANSACTIONID”。

TRANSACTIONID表中的Header列设置为Identity=True。子表CAS_ClaimsAdjustment的列TransactionID为FK Header.TransactionID

为什么DBContext.SaveChanges()的行为似乎有所不同,具体取决于调用相同代码的方式?

 foreach (var file in Files)
  { 
          Parser parser = new Parser();
          parser.HandleFile(file);
  }


public class Parser
{

  public void HandleFile(string file)
  {
      using (Model.DbContext dbcontext)
    {
        foreach (var itemn in file)
        {
           Claims claim = new Claims();

            // ...

           dbcontext.Claims.Add(claim);
        }

        dbcontext.SaveChanges();

    }
  }


}

1 个答案:

答案 0 :(得分:0)

我解决了我的问题。在我的控制台应用程序中,我将我的实体声明为“静态”。当然这没用。一旦我删除了static关键字,一切都很好。