2011-09-18 2 views
3

현재 MySQL과 SQL Lite (메모리 내 테스트 수행)에 두 개의 edmx 파일이 있습니다. 그리고 그것들을 동일한 POCO 클래스 세트에 매핑해야합니다. 두 개의 edmx 파일을 유지하는 것이 좋습니까? 아니면 공통 맵핑과 개념 모델을 가진 두 개의 스토리지 모델을 사용해야합니까?동일한 POCO 클래스에 대한 여러 edmx

업데이트. 메모리 내 테스트 지점을 명확히하고 싶습니다. 개발자가 로컬에서 실행하는 동안에 만 메모리 테스트를 사용하고 싶습니다. 그러나 서버를 빌드하면 MySQL과 같은 테스트를 실행하여 프로덕션과 유사한 데이터베이스에서 작동하는지 테스트합니다.

답변

3

테스트를 위해 다른 데이터베이스 플랫폼을 사용하지 마십시오. EF는 절대적으로 잘못된 접근입니다. 각 데이터베이스는 EF 제공 업체에서 서로 다른 기능 지원을 가질 수 있으므로 다른 코드를 테스트 할 것입니다.

실제로 두 개의 서로 다른 데이터베이스 플랫폼을 사용하려면 맵핑을 위해 유창한 API를 사용해야한다.

매핑에 EDMX 파일을 사용할 때 항상 약간의 중복성이 필요합니다. 분명히 클래스는 동일하게 유지되어야하므로 개념 모델은 동일하게 유지되어야합니다. 이는 두 EDMX 파일의 CSDL 부분이 동일해야 함을 의미합니다. 지정된 데이터베이스 플랫폼을 대상으로하기 때문에 SSDL 부분이 달라야합니다. SSDL의 테이블이 다른 이름, 다른 열, 다른 스키마 또는 관계가 다른 이름을 가진 경우에만 MSL 부분이 달라야합니다.

중복성을 줄이려면 EDMX를 사용하지 말고 CSDL, MSL 및 SSDL 파일을 직접 사용해야합니다. 그러면 디자이너 지원이 중단됩니다. 아마 정확하지만 사용하기가 훨씬 어려울 것입니다.

가장 간단한 접근법은 데이터베이스 제공 업체를 제외한 모든 항목을 동일하게 유지하고 일부 기본 제공 스크립트가 SQLite의 두 번째 EDMX를 EDMX에서 업데이트하도록 허용하는 것입니다.이 업데이트의 스크립트, 도우미 응용 프로그램 또는 XSLT 변환은 전적으로 사용자가 결정합니다.

+0

위대한 답변! 귀하의 포인트에 관한 업데이트를 추가했습니다 "테스트를 위해 다른 데이터베이스 플랫폼을 사용하지 마십시오" – SiberianGuy

관련 문제