0

EF 5를 사용하여 기존 Oracle 데이터베이스와 통신하는 응용 프로그램을 빌드하고 있습니다. DB 스키마의 일부를 변경할 수 없습니다. VS2012 마법사를 사용하여 데이터베이스에서 모델을 생성했으며 모든 클래스의 이름은 Oracle의 이름을 따서 지정됩니다."데이터베이스에서 모델 업데이트"마법사가 이름이 변경된 POCO 클래스의 매핑을 삭제합니다.

데이터베이스의 개체 이름 지정은 QUITE_UGLY_AND_INCONSISTENT이므로 POCO 클래스 및 속성의 이름을 바꾸고 싶습니다. EDM 디자이너에서 쉽게 할 수 있습니다. 결과적으로 클래스와 속성 이름이 깔끔하게 명명되어 DB에서 UGLY_NAMED 테이블에 매핑됩니다. 쿼리를 성공적으로 수행 할 수 있으며 모든 것이 원활하게 작동합니다. 정확히 내가 원했던 것.

그러나 모델에 새 테이블을 추가해야 할 경우 데이터베이스에서 모델 업데이트 마법사를 실행하고 가져올 추가 테이블을 확인합니다. 그것은 내 이름이 바뀐 (그러나 올바르게 맵핑 된) 클래스를 데이터베이스에서 찾을 수 없다는 삭제 탭 아래에 갑자기 나열합니다. 마침을 클릭하면 기존 클래스의 매핑이 해제되고 각 속성을 해당 DB 열로 수동으로 다시 매핑해야합니다. 또는 버전 관리에서 이전 버전의 EDMX 파일로 롤백합니다.

무엇을 찾고 있습니까 가능한 한 유지 보수가 가능한 응용 프로그램이 필요하므로이 문제에 대한 가장 우아한 해결책이라고 생각합니다. 기존의 이름이 바뀐 객체와 그 매핑을 유지하면서 데이터베이스에서 새로운 클래스를 자동 생성 할 수있는 방법을 선호합니다.

  • 모델 업데이트 마법사가 기존 매핑을 삭제하지 못하게하는 몇 가지 방법이 있습니까?
  • 생성 된 클래스의 이름을 바꾸는 데 다른 접근 방식을 사용해야합니까?
  • 생성 된 클래스를 변경하지 않고 나머지 응용 프로그램에 노출되는 sanely-named 래퍼 클래스를 구성해야합니까?
  • 자동 생성을 자제하고 대신 코드 우선 접근 방식을 사용해야합니까? 이는 수동 모델 코딩과 매핑에 소요되는 시간이 가능한 한 적기 때문에 매우 바람직하지 않은 옵션입니다. 객체를 추가하는 것은 매우 빈번한 작업입니다.
  • 어쩌면 다른 ORM을 사용해야할까요?

답변

0

필자는 어딘가에서 읽은 기사에서 권장 사항으로 인해 "모델에서 데이터베이스 생성"마법사를 실행했습니다. 모든 모델의 기본 테이블과 열 이름이 SQL Server 표준 이름 ([dbo]. [Customers]. [CustomerID] 등)으로 변경되었습니다.

관련 문제