c# 사용법 - DbContext와 ObjectContext의 차이점은 무엇입니까?




dbset (3)

DbContext는 ObjectContext 클래스의 가벼운 버전으로, ObjectContext 위에 거의 놓여 있습니다 (DbContext에서 ObjectContext에 도달하는 방법조차 있습니다). 또한 IMO를 사용하는 것이 훨씬 쉬우 며 CRUD 작업을 느리게 만듭니다.

더 나은 정보를 얻으려면 Julie Lerman 보다 더 나은 정보를 얻기 위해 EF 4.1에 추가 된 정보를 얻으십시오.

MSDN :

작업 단위 및 저장소 패턴의 조합을 나타내며 데이터베이스를 쿼리하고 변경 사항을 그룹화하여 변경 내용을 그룹으로 저장소에 다시 기록 할 수 있습니다. DbContext 는 개념적으로 ObjectContext 와 유사합니다.

DbContext 는 DB에 대한 연결과 DB에 대해 작동하는 스레드의 수만 처리합니다.

이제 추적 메커니즘이 포함되어 있다는 것을 알고 있습니까? 나는 이것이 ObjectContext 에 있다고 생각했다.

그렇다면 그 차이점은 무엇입니까?


DbContext는 가장 일반적으로 사용되는 ObjectContext의 기능을 드러내는 작은 API입니다. 경우에 따라 이러한 기능이 DbContext API에서 미러링됩니다. 다른 경우 엔, Entity Framework 팀이 Find 또는 DbSet.Local과 같은 속성을 제공함으로써 복잡한 코딩을 단순화했습니다. 하지만 여전히 액세스해야 할 수도있는 밑에 숨어있는 큰 API가 있습니다. 예를 들어 MetadataWorkspace로 직접 작업하여 클래스에 대한 일반 코드를 작성할 수 있습니다.이 API는 리플렉션보다 모델을 더 효율적으로 읽을 수 있기 때문입니다. 또한 MetadataWorkspace는 예를 들어 키 속성과 같이 리플렉션을 통해 발견 할 수있는 것보다 메타 데이터에 대한 자세한 정보를 제공 할 수 있습니다. 또는 LINQ에서 Entities에 액세스 할 수없는 Entity SQL을 통해 노출되는 데이터베이스 관련 함수를 활용할 수도 있습니다. 또는 ObjectContext를 사용하여 작성된 응용 프로그램을 이미 가지고있을 수 있으며 모든 ObjectContext 코드를 바꾸지 않고 DbContext를 향후 업데이트에서 활용하려고합니다. (Programming DbContext의 참조)


Idisposable은 결정적 (확인 된) 가비지 수집을 원할 때마다 구현됩니다.

class Users : IDisposable
    {
        ~Users()
        {
            Dispose(false);
        }

        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
            // This method will remove current object from garbage collector's queue 
            // and stop calling finilize method twice 
        }    

        public void Dispose(bool disposer)
        {
            if (disposer)
            {
                // dispose the managed objects
            }
            // dispose the unmanaged objects
        }
    }

User 클래스를 만들고 사용할 때 명시 적으로 dispose 메서드를 호출하지 않으려면 "using"블록을 사용합니다.

using (Users _user = new Users())
            {
                // do user related work
            }

사용 된 블록의 끝 사용자 개체는 암시 적으로 dispose 메서드를 호출하여 처리됩니다.





c# asp.net entity-framework