2010-08-19 2 views
2

"코드 생성 전략"이 "없음"으로 설정된 엔티티 데이터 모델 (EDMX)이 주어지면 EF는 개념 모델을 매핑 할 CLR 유형을 어떻게 결정합니까?MS Entity Framework는 개념 모델에서 CLR 유형으로 어떻게 매핑됩니까?

나는 개념적 모델과 일치하는 유형의 어셈블리를 탐색하지만 어쨌든 EF의 CTP 버전과 관련하여 읽은 것 같습니다. 아직도 그렇습니까? 어떻게 든이 프로세스를 제어 할 수 있습니까?

특히, 나는 Linq2SQL을 사용하여 실질적인 코드베이스를 EF 4.0에서 POCO를 사용하도록 이동하는 시나리오에 있습니다. 따라서 Linq2SQL 클래스와 POCO 클래스는 동일한 어셈블리에 있지만 다른 네임 스페이스에 있습니다. L2S에서 EF 로의 원활한 마이그레이션을 시도하고 있으므로 두 프레임 워크를 한 동안 병렬로 실행하고 싶습니다. 그러나, 나는 모호한 여러 CLR 형식이 EDM 형식 'SomeType를'일치 때문에

EDM 유형 CLR 유형의 매핑을 말하는 런타임 오류입니다 얻을. 이전에 발견 CLR 유형 'SomeNamespace.SomeType'는 새로 발견 CLR 유형 'SomeNamespace.POCO.SomeType'

SomeNamespace은 L2S 엔티티의 네임 스페이스입니다

. 이 오류는 EF가 개념 모델과 일치하는 모든 유형을 프로빙 중이라면 의미가 있습니다. SomeNamespace.POCO 네임 스페이스 만 조사하도록 EF를 제한 할 수 있습니까? 아니면 POCO 객체를 다른 어셈블리에 넣어야합니까? 아니면 세 번째 방법을 택해야합니까?

감사합니다.

답변

4

을 주목 ADO.NET 팀 블로그에서이 댓글 :

제프 2010년 2월 25일 오전 9시 10분 @Derek

이 의도적이다. POCO 클래스를 네임 스페이스에 넣을 수 있습니다. Entity Framework의 을 검색하기위한 규칙 메커니즘 모델의 엔터티 속성이 네임 스페이스를 사용하지 않습니다. 은 형식 이름 ( 네임 스페이스 없음)이 모델 (edmx/csdl 파일)의 EntityType 이름 과 일치합니다.

에 동일한 유형의 이름이 여러 개 있지만 다른 네임 스페이스가있는 경우가 있습니다. 우리는 네임 스페이스를 고려하지 않기 때문에 은 여러 유형을 발견했음을 감지하고 예외를 throw합니다.

제프

이 문서를 참조하십시오 : link text

관련 문제