2012-01-27 3 views
1

현재 비즈니스 논리에서 EntityObject를 없애기 위해 프로젝트를 EF4 POCO로 마이그레이션하려고하고 중복 테이블 이름 문제가 발생했습니다. DAL은 3 개의 서로 다른 데이터베이스에 액세스 할 수 있으며 각 데이터베이스에 하나씩 3 개의 .edmx 파일이 있습니다.EF4 POCO 중복 테이블 이름

그러나 데이터베이스의 일부 테이블은 같은 이름을 공유합니다. DB1.CUSTOMER 및 DB2.CUSTOMER. MyApp.Db1.CUSTOMER 및 MyApp.Db2.CUSTOMER와 같이 다른 네임 스페이스 (각 데이터베이스에 대해 하나의 네임 스페이스)로 생성 된 관련 엔터티를 관리하는 데 어려움을 겪었습니다. EF는 어느 것을 선택할지 결정할 수 없으며 애매한 부분이 있다고 주장합니다. 실제로 사실이 아닙니다.

엔티티를 각각의 POCO에 수동으로 매핑하거나 해결 방법이 있습니까? 이것은 EF 4.2입니다.

답변

2

엔티티 유형을 인식 할 때 EF는 네임 스페이스를 사용하지 않습니다. 클래스 이름은 모델 다이어그램 (EDMX)의 엔티티 이름과 직접 일치합니다. 그래서 해결 방법은 서로 다른 모델에서 다른 이름을 사용하는 것입니다. 그러면 코드가 훨씬 잘 읽혀집니다.

+0

나는 그 때 두려워했다. 모델에서 엔터티의 이름을 바꾸는 데 아무런 문제가 없습니다. 그러나 테이블 자체의 이름을 바꾸는 것은 내 프로젝트가 해당 DB에 액세스하는 유일한 프로젝트가 아니기 때문에 옵션이 아닙니다. 따라서 유일한 방법은 해당 테이블을 EDMX의 엔티티에 매핑하는 것입니다. 주어진 EntitySet에 대한 EntityType을 변경하여 SSDL에서 그렇게 할 수 있습니다. 향후 업데이트 문제가 남아 있습니다 (예 : DB에서 모델을 업데이트하면 해당 변경 사항을 덮어 씁니다). –

+1

SSDL에서는 아무 것도 변경할 수 없습니다. SSDL은 데이터베이스에있는 테이블의 실제 이름을 설명합니다. 다이어그램에서 엔티티의 이름을 바꾸면 테이블에서 새 엔티티 이름으로의 매핑이 자동으로 업데이트됩니다. –