0

私は Entity Framework 4.1 に取り組んでいます。ここでは、AddObject() を使用してデータベースにコントロールを追加し、SaveChange() メソッドを使用して保存します。

しかし、追加されたコントロールを削除して再度追加しようとすると、このエラーが何度も発生します (更新、挿入、または削除ステートメントを保存すると、予期しない行数 (0) に影響します。エンティティが変更されたため、エンティティが変更または削除された可能性があります)。 ObjectStateManager エントリを更新します。) しかし、それを追加することはできません。アプリケーションを閉じてから追加しようとすると、そのコントロールを追加できます。

私はあちこちでうまくいかない方法をたくさん検索しようとしましたが、解決策を見つけることができませんでした. 私はEntity Frameworkの分野で生まれたばかりです。

4

1 に答える 1

0

このシナリオのように、追加、削除、変更などのすべての操作の後に、エンティティ フレームワーク オブジェクト コンテキストの SaveChange() メソッドを呼び出していました。しかし、私は背中合わせに例外を受け取っていました。それは、このようなメソッドを呼び出すことによって解決されました public void Save(object entity) { using (var transaction = Connection.BeginTransaction()) {

            try
            {
                SaveChanges();
                transaction.Commit();
             }
             catch (OptimisticConcurrencyException)
             {
                 if (ObjectStateManager.GetObjectStateEntry(entity).State == EntityState.Deleted || ObjectStateManager.GetObjectStateEntry(entity).State == EntityState.Modified)
                        this.Refresh(RefreshMode.StoreWins, entity);
                  else if (ObjectStateManager.GetObjectStateEntry(entity).State == EntityState.Added)
                        Detach(entity);
                  AcceptAllChanges(); 
                  transaction.Commit();
              }

        }
    }
于 2012-12-15T11:18:57.560 に答える