2016-08-11 41 views
1

我在EF中遇到了一個相當典型的問題。隨着我繼續訪問我的上下文,它追蹤和列舉的檢測項目數量增加。最終,一切都會慢慢爬行。下面是目前我在做什麼來解決這個問題:有沒有辦法在EF中詢問上下文有多大跟蹤集?

public class ContextGenerator 
{ 
    private IContext _context; 
    private string _connString; 
    private int accessCount; 

    public ContextGenerator(string conn) 
    { 
     _connString = conn; 
    } 

    public IContext Instance 
    { 
     get 
     { 
      if (accessCount > 100) 
      { 
       Dispose(); 
      } 
      if (_context == null) 
      { 
       var conn = EntityConfigurationContext.EntityConnection(_connString); 
       _context = new MyDbContext(conn); 
       accessCount = 0; 
      } 
      ++accessCount; 

      return _context; 
     } 
    } 

    public void Dispose() 
    { 
     _context.Dispose(); 
     _context = null; 
    } 
} 

這主要工作,以防止過於笨重我的背景下,作爲其配置,並創建一個新的每100個訪問,但它似乎很笨重,雜亂。此外,100是任意選擇的,並且不能保證有人不會在一次訪問中插入一百萬件事物。有沒有辦法,而不是問上下文本身,如果它變得「太大」?

或者如果任何人有解決這個問題的更好的主意,我願意提出建議。

回答

0

每個環境應該是一個單一的工作單元,因此我強烈建議你每個操作有1個環境(除非你非常需要)。

欲瞭解有關EF目前正在跟蹤結帳的更多信息,請訪問Context.ChangeTracker

相關問題