DbContext のスレッド セーフに関するこの質問に続いて (そうではありません)、マップされた POCO を複数のスレッドで安全に処理できるかどうかを知る必要があります。
CodeFirst を使用してデータベースにマップされた 2 つのオブジェクトがあるとします。
class Poco1
{
public int Id { get; set; }
public string SomeProp {get; set;}
public virtual List<Poco2> children { get; set; }
}
class Poco2
{
public int id { get; set;}
public Poco1 parent { get; set; }
}
メインスレッドで Poco1 を読み込んでいます:
var parentPoco = _context.Poco1s.Where(...).Single();
次に、それをタスクに渡します。そこで別のオブジェクトを作成し、親を少し変更します
var childPoco = new Poco2 { parent=parentPoco };
parentPoco.SomeProp = "Tasked!";
次に、メイン スレッドに戻り、childPoco をコンテキストに追加します。
_context.Poco2s.Add(childPoco);
_context.SaveChanges();
セカンダリ スレッドのコンテキストでは何もしていませんが、それにマップされているオブジェクトを操作しています。
それをしてもいいですか?