2011-07-07 9 views
1

Webアプリケーションにデータを保存するために複数のコンテキストを1つのスレッドに作成するのは安全ですか? 私は以下のようなコードを持っており、大量の反復で動作するかどうか心配です。 このようなコードに問題はありますか?スレッドごとに複数のコンテキスト

private void SaveContent(TargetSegment ts, 
            Folder f, 
            IEnumerable<Module> m) 
    { 
     using(var ctx = new EntityContainer()) 
     { 
      var entity = CreateEntityFrom(ts, f, m); 

      ctx.Entities.Add(entity); 
      ctx.SaveChanges(); 
     } 
    } 

    foreach(var ts in TargetSegments) 
    { 
     var f = FindFolder(ts); 
     var m = ExtractModules(ts, f); 

     SaveContent(ts, f, m); 
    } 

答えて

1

コードに問題はありません。上記のコードは、呼び出されるたびにSQL INSERT文を実行します。オブジェクトを処分する最善の方法であるusingブロックにコードがあります。

複数のトランザクションのEFモデルから選択する場合にのみパフォーマンスの問題が発生しました。その場合、私は可能な限りキャッシュして問題はありませんでした。

+0

ありがとうございます。私はすべてのシーケンスに対して単一のSaveChanges呼び出しを使用しようとしていましたが、dbに書き込まれるときに各エンティティを検証することは困難です。だから、私はエラーとそのコンテキストに関するすべての情報を持っている例外を処理します。 –

関連する問題