2011-02-08 5 views
4

엔티티 프레임 워크가있는 공급자 패턴에 어떤 동작을 사용해야합니까? 이 성과에 의미EntityFramework에있는 엔티티 인스턴스의 성능 영향

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

    public ... 
} 

하는가를 :

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 
} 

또는 그것은 사용하기 괜찮습니다? 그것에 대한 장단점은 무엇입니까?

답변

1

TestProvider의 길이와 검색된 항목에서 수행 할 작업의 양에 따라 다릅니다. 일반적으로 ObjectContext 인스턴스는 가능한 한 최단 시간 동안 사용되어야하지만 단일 작업 단위 (UOW)를 나타내야합니다. ObjectContext 인스턴스는 공유되어서는 안됩니다. 나는 관련 질문 here에 대답했다.

두 가지 방법 모두 일부 시나리오에서 올바른 것을 의미합니다. 엔터티를 가져 와서 수정하고 동일한 공급자 인스턴스로 저장하려고하면 첫 번째 방법은 괜찮습니다. 엔터티를 검색하려는 경우 두 번째 접근 방식은 괜찮습니다. 즉, 엔터티를 즉시 수정하지 않고 다른 항목을 선택하지 않으려는 경우입니다.

+0

그런 경우의 성능은 동일하거나 약간 다를 수 있습니다. – BrunoLM

+0

@ 브루노 : 태그 만 선택하려는 경우 성능이 동일합니다. –