2011-02-08 46 views
4

我應該使用具有實體框架的提供者模式的行爲?EntityFramework中的實體對實體的性能影響

public class TestProvider : IDisposable 
{ 
    public Entities entities = new Entities(); 

    public IEnumerable<Tag> GetAll() 
    { 
     return entities.Tag.ToList(); 
    } 

    public ... 

    #region IDisposable Members 

    public void Dispose() 
    { 
     entities.Dispose(); 
    } 

    #endregion 
} 

還是確定使用:

public class TestProvider 
{ 
    public IEnumerable<Tag> GetAll() 
    { 
     using (var entities = new Entities()) 
     { 
      return entities.Tag.ToList(); 
     } 
    } 

    public ... 
} 

它意味着性能?它有什麼優點和缺點?

回答

1

這取決於TestProvider應存在多長時間,以及您希望對檢索到的實體執行哪些操作。通常ObjectContext應儘可能使用最短的時間,但它也應該代表單個工作單元。 ObjectContext實例不應該被共享。我回答了相關問題here

這意味着您的方法在某些情況下都是正確的。如果您希望檢索實體,修改它們並使用相同的提供程序實例保存它們,則第一種方法是可行的。如果您只想檢索實體,則不需要立即修改它們,也不希望選擇其他任何內容。

+0

關於在這些情況下的表現,它會是相同的還是略有不同? – BrunoLM 2011-02-08 16:05:51