エンティティ フレームワーク 4.1 (POCO) を使用して、1 回のボタン クリックで 100 レコードを更新する必要があります。データベースのラウンドトリップを行わずに、変更されたレコードをデータベースに保存する必要があります (パフォーマンスの問題を回避するため)。
デタッチとアタッチでいくつかの解決策を見てきました。
アタッチ時にエラーが発生 する エンティティ オブジェクトは、IEntityChangeTracker の複数のインスタンスによって参照できません
そのため、最初にデタッチを試みましたが、新しいエラーが発生します The object cannot be detached because it is not attached to ObjectStateManager
私はリポジトリ パターンを使用してエンティティのリストを取得し、グリッドでバインドするために UI レイヤーに渡します。
ボタンのクリックで、これらのエンティティを DB レイヤーに渡して更新します。
エンティティを選択してcontext.applychangesを実行すると、正常に機能します。パフォーマンスの問題のため、この往復を避ける必要があります。
public void Update(OPRPortCall portCall)
{
using (VMEntities context = new VMEntities())
{
context.Detach(portCall); //The object cannot be detached because it is not attached to the ObjectStateManager.
context.AttachTo("OPRPortCalls", portCall); //An entity object cannot be referenced by multiple instances of IEntityChangeTracker
context.ObjectStateManager.ChangeObjectState(portCall, EntityState.Modified);
context.SaveChanges();
}
}
これに対する解決策を教えてください。
クリストファー