現在、私はdatacontext.savechanges()メソッドの前に特定の型のすべてのオブジェクトをデータコンテキストから切り離して、データベースに挿入しないようにコードを実装しようとしています。 dbContext.Entry(entity).State = EntityState.Detached
を呼び出して単一のエンティティを切り離すことができますが、特定のタイプのすべてのオブジェクトをコンテキストから切り離す方法はありますか?エンティティのフレームワークデータコンテキストから特定の種類のオブジェクトをすべて切り離すにはどうすればよいですか?
編集:私はマーク・Cが提案何実装され、それはコンパイルが、私はコードを実行しようとしたとき、私は無効演算例外を取得:
エンティティタイプDbEntityEntryは、現在のモデルの一部ではありません コンテキスト。
foreach (System.Data.Entity.Infrastructure.DbEntityEntry dbEntityEntry in this.dataContext.ChangeTracker.Entries<Customer>())
{
if (dbEntityEntry != null && dbEntityEntry.State != System.Data.Entity.EntityState.Modified && dbEntityEntry.State != System.Data.Entity.EntityState.Unchanged)
{
dataContext.Entry(dbEntityEntry).State = System.Data.Entity.EntityState.Detached;
}
}
編集#2:より密接にそれを見た後、私は間違いを犯しました。 DBEntityEntryでエンティティを指定する必要があるようです。次の変更で、それは動作します:EntityState.Unchanged代わりのEntityState.Detachedを使用して推薦するゲルトへ
foreach (System.Data.Entity.Infrastructure.DbEntityEntry dbEntityEntry in this.dataContext.ChangeTracker.Entries<Customer>())
{
if (dbEntityEntry.Entity != null && dbEntityEntry.State != System.Data.Entity.EntityState.Modified && dbEntityEntry.State != System.Data.Entity.EntityState.Unchanged)
{
dataContext.Entry(dbEntityEntry.Entity).State = System.Data.Entity.EntityState.Unchanged;
}
}
感謝を。
デタッチ*する必要があるかどうかわかりません。それらを切り離すと関連付けが損なわれる可能性があるため、おそらくそれらを「変更なし」とマークすることをお勧めします。 –