データベースからレコードを読み取り、それに関連付けられている ObjectContext を破棄します。後で消費者がレコードで終了したら、データベースで更新する必要があります。新しいコンテキストでそれを行うにはどうすればよいですか?
db からレコードを読み取り、BlockingCollection に入れる方法は次のとおりです。
var products = from r in context_.Products
orderby r.id
select r;
List<Product> pList = products.Take(10).ToList();
データベース内のこれらのレコードを新しいコンテキストで更新する方法は? ありがとう!
私は次のことを試みましたが、失敗しました:
SMEntities context = new SMEntities();
Product p = outPipe.GetConsumingEnumerable().First();
outContext.Products.Attach(p);
outContext.SaveChanges();
Exception: object cannot be referenced by multiple instances of IEntityChangeTracker で返されます
更新 (同じコンテキストを使用したくない理由の説明): 製品レコードは異なるスレッドの多くのタスクによって消費され、スレッド内のレコードの一部が途中にある可能性があるため、プロデューサー スレッドで context.SaveChanges を呼び出しません。製品レコードへの設定変更の。この場合はどうなりますか?