2013-04-15 6 views
0

다른 데이터베이스 모델을 가진 두 개의 프로젝트가 있습니다 (동일한 Entity Framework 버전 5.0.0 임에도 불구하고).ObjectContext API 또는 DbContext API를 사용하는 방법을 알려면?

그들의 쿼리는 다음과 같이 :

프로젝트 1 :

if (_db.Entry(customer).State == EntityState.Detached) 

프로젝트 2 :

if (customer.EntityState == EntityState.Detached) 

이러한 차이뿐만 아니라 다른 사소한 것들입니다.

각 프로젝트에서 사용중인 Entity Framework 버전 (DLL 버전이 일치 할 때)을 어떻게 알 수 있습니까? "이전"버전을 "최신"모델 버전으로 업데이트하는 것이 맞습니까? 이점은 무엇입니까?

답변

0

프로젝트 1은 DbContext API를 사용합니다.이 컨텍스트 유형에만 Entry 메서드가 있기 때문입니다.

프로젝트 2는 대부분 EntityObjectCustomer에서 파생 된 기관과 ObjectContext는 거기에서 EntityState을 상속 사용합니다. Customer에 맞춤 EntityState 속성이있는 경우 한 줄로 구분할 수 없습니다. F12를 두 번 누르십시오. customer 변수를 한 번 눌러 선언에 연결 한 다음 해당 변수의 형식 (아마도 Customer)을 입력하여 클래스 선언을 확인하고이 변수가 EntityObject에서 파생되는지 확인하십시오.

프로젝트 2의 EF5 어셈블리가 참조된다는 사실은 아무런 의미가 없습니다. 이 코드에서 사용하지 못할 수 있습니다 또는 코드는 (Include의 람다 버전과 같은) 몇 가지 헬퍼 메소드를 사용하지만이 DbContext의 모든 핵심 기능을 사용하지 않는 것. .NET 프레임 워크 어셈블리의 EF 클래스를 참조합니다 (System.Data.Entity.dll 등).

업그레이드 프로젝트 (2)는 EF의 모든 새로운 개발이 POCO 접근 (대신 EntityObject 방식)을 따르기 때문에 고려할 가치가있다.

+0

설명해 주셔서 감사합니다. 이전 데이터베이스 모델을 삭제하고 동일한 (이전 모델이지만 새 DLL) 프로젝트 2를 사용하여 다시 작성해야합니까? 아니면 "업그레이드 메커니즘"이 있습니까? 그건 그렇고 : '고객'은'EntityObject'에서 파생됩니다. 즉, "옛"방식을 사용하고있는 것입니다, 그렇지 않습니까? – SeToY

+0

@ SeToY : 네, 옛날 방식입니다. 업그레이드에 대해 별도의 질문을 할 수 있습니까? 나는 가장 매끄러운 접근 방식이 무엇인지 확신 할 수 없으며 문제를 일으키고 싶지 않습니다. 당신은 또한 (예를 들어, 귀하의 질문에 라인이 더 이상 어쩌면 더 작동하지 않습니다) 일부 코드 변경을 기대해야합니다. – Slauma

+0

나는 새 질문을 만든 (당신이 첫 번째 모델, 등 또는 기존 DB 스키마로 시작하는 경우 컴파일러 버전, .NET 버전, EF 버전, DB 버전을) 감사합니다, 귀하의 질문에 가능한 한 많은 정보를 넣어 흠뻑! – SeToY