Code-First Entity Framework では、トランザクションの動作を変更して、すべての変更を破棄せず、代わりにすべての変更を障害点まで保持する方法はありますか?
例えば:
foreach {var objectToSave in ArrayOfEntityObjects)
{
MyContext.Insert(objectToSave);
}
try
{
MyContext.SaveChanges();
}
catch (Exception x)
{
//handling code
}
上記の例では、配列が 100 個のオブジェクトの配列であり、アイテム 50 でエラーが発生したと仮定すると、成功したものを少なくとも失敗するまで保持したいと考えています。これを行うために foreach ループの各反復中に MyContext.SaveChanges() コマンドを実行していることは知っていますが、1 回のコミットでデータベースにコミットすることでパフォーマンスを向上させたいと考えています (私たちの理解では、EF はすべてのコマンドを一度に送信します)。トランザクションの場合、単一の接続を介して、1 回の往復のみを使用します)。