0

ヘッダー/詳細レコードへの挿入を担当するオブジェクトを作成するプロセスがあります。テーブルに挿入するコードを単独で実行すると、すべてが正常に実行されます。ただし、そのコードをループ内の別のクラスとして呼び出すと、例外が発生します。

System.Data.Entity.Infrastructure.DbUpdateException は処理され
ませんでした Message=INSERT ステートメントが FOREIGN KEY 制約 "FK_CAS_ClaimsAdjustment_Header835" と競合しました。データベース「ERA835DB」、テーブル「dbo.Header835」、列「TRANSACTIONID」で競合が発生しました。

表のTRANSACTIONIDHeaderは として設定されていIdentity=Trueます。子テーブルには、への FK でCAS_ClaimsAdjustmentある列があります。TransactionIDHeader.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();

    }
  }


}
4

1 に答える 1

0

私は自分の問題を解決しました。私のコンソールアプリケーションでは、エンティティを「静的」として宣言していました。もちろん、これは機能しませんでした。staticキーワードを削除すると、すべて問題ありませんでした。

于 2013-01-09T00:52:09.957 に答える