2011-07-07 45 views
1

在一個線程中創建多個上下文以將數據保存到Web應用程序中是否安全? 我已經得到了下面的代碼,並擔心它是否會在大量迭代中工作。 這樣的代碼有問題嗎?每個線程有多個上下文

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語句。你有一個使用塊的代碼,這是處理這個對象的最好方法。

我只在從EF模型中選擇多個事務時才遇到性能問題;在那種情況下,我會盡可能緩存並且沒有任何問題。

+0

謝謝。我試圖對所有序列使用單個SaveChanges調用,但在將要寫入數據庫時​​很難驗證每個實體。所以,當我掌握有關錯誤和上下文的所有信息時,我會處理異常。 –

相關問題