2011-07-02 8 views
2

は、私は、ウェブページ上のいくつかのデータを表示したいと言うので、私はデータをロードすることができます:MergeOption.NoTrackingを使用して表示用にデータを取得する必要がありますか?

using (KEntities ctx = new KEntities()) 
{ 
    ctx.KSet.MergeOption = MergeOption.NoTracking; 

    var items = (from c in ctx.KSet 
       where c.ParentId == 0 
       select new 
       { 
        Title = c.Title, 
        Id = c.Id,       
        Subs = ctx.KSet.Where(o => o.ParentId == c.Id)          
       }).ToList(); 

} 

はMergeOption.NoTrackingを使用して任意の利点がありますか?
今の場合、いつ使用しますか?

答えて

3

はい、データのみが必要な場合は、MergeOption.NoTrackingを使用します。つまり、更新や削除のためにエンティティを追跡するグラフには格納されません。これは、メモリの観点から見れば、パフォーマンスが向上します。

+0

私はデータを取得するたびにコンテキストを破棄していますので、何か変更されますか? – anderi

+0

いいえ、グラフがコンテキストによって管理されていても、パフォーマンスは低下します。 –

関連する問題