1

コンテキストでオブジェクトを実行するたびに同時実行例外を実行すると問題が発生します

私はこれを持っています:(私はそれをウェブフォームで使用しています)

using(entities ctx = new entities()){
    EventModel newEvent = new EventModel{
      Name = "name",
      Description = "description",
      CreationDate = DateTime.Now,
      CreatedBy = CurrentUserId()
    };

    try{
         ctx.EventModels.AddObject(newEvent);
         ctx.SaveChanges();
    }catch(OptimisticConcurrencyException ocex){
         if(ctx.ObjectStateManager.GetObjectStateEntry(newEvent).State == EntityState.Added){
               // proves that it is added.
         }
    }catch(Exception ex){
          throw ex;
    }
}

今はどこを見たらいいのかわからない。SQL プロファイラーを試してみましたが、新しいインスタンスを 2 回挿入しようとしていることに気付きました。それでおしまい。エラーなどはありません。

考え?

ところで:これは私が得るエラーです

Store update、insert、または delete ステートメントが予期しない数の行 (0) に影響を与えました。エンティティが読み込まれてから、エンティティが変更または削除された可能性があります。ObjectStateManager エントリを更新します。

編集: これは、プロファイラーで実行される sql です。同じ SQL が 2 回実行されました。

exec sp_executesql N'insert [dbo].[EventModel]([Name], [Description], [CreationDate], [CreatedBy]) values (@0, @1, @2, @3)', @0="Name", @1="description", @2="2013-01-31 11:41:41.5231006", @3="1"
4

1 に答える 1

2

問題を解決しました。テーブルの引き金のせいだった。addobject を実行すると、エンティティ フレームワークは Id を期待します。その Id を取得できない場合、2 つのインスタンスによって変更された更新であると見なされ、そのエラーがスローされます。

于 2013-02-04T18:03:41.377 に答える