2013-04-26 3 views
1

Entity Framework를 사용하여 모델링 한 데이터베이스에서 데이터를 읽을 수있는 응용 프로그램을 만들었습니다. 이제 다른 테이블에 동일한 테이블이있는 다른 데이터베이스가 있습니다.다른 데이터베이스와 호환되는 Entity Framework DbContext

문제는 두 번째 데이터베이스의 테이블이 원래 이름과 다른 스키마에 속하므로 app.config 파일에서 내 컨텍스트의 연결 문자열을 변경하는 것이 효과가 없다는 것입니다. (나는 "테이블이나 뷰가 존재하지 않는다"라는 오류를 얻는다.) 원래 스키마 이름을 나타내는 자동 생성 코드 어딘가에 매핑이 있어야합니다.

이런 상황을 처리하는 올바른 방법은 무엇입니까? 첫 번째 데이터베이스와 동일하기 때문에 두 번째 데이터베이스를 다시 모델링하지 않아도됩니다. 다른 응용 프로그램이 작동을 멈추기 때문에 데이터베이스를 변경할 수 없습니다.

올바른 방향으로 조금 움직이면 크게 감사하겠습니다.

+0

모습을, 일반 텍스트로. – Kelmen

+0

네, 제가 생각하기에, 첫 번째 데이터베이스에 대한 스키마에 참조가 있습니다. config를 통해 스키마 이름을 구동 할 수있는 방법이 있습니까? – philreed

답변

0

좋아요, 그래서 이것을 해결하기 위해 여기에 있습니다.

@Kelmen이 주석에서 언급했듯이 텍스트 편집기에서 EDMX 파일을 열면 스키마 정보가 저장되는 위치임을 알 수 있습니다. 그래서 나는 단순히 스키마 속성의 값을 지우고 연결 문자열을 사용하여 스키마를 구동 할 수 있다고 생각합니다.

이것은 몇 가지 이유에 대한 느낌이 좋지 않았다

  1. 모델이 어느 시점에 갱신 된 경우

    , 그것은 정말 짜증나는 것 스키마 이름을 다시 채워했을 수 있습니다. 이것이 실제로 일어날 지 시험 할 시간이 없었습니다.

  2. 이 메서드는 런타임에 변경해야 할 경우 스키마 이름을 제어 할 수 없습니다.

이 솔루션은 내 파생 DbContext 클래스 내에서 OnModelCreating 이벤트에서 모델 구성을 편집 할 코드 먼저하고 유창함 API를 사용하는 것이 었습니다.

이제 스키마 이름을 전달하거나 내 app.config에서 드라이브 할 수 있도록 내 컨텍스트 클래스를 수정하려고합니다.

나는 링크 자습서가 매우 유용하다는 것을 발견하여 edmx 파일에

Change Schema of Entity Framework

Entity Framework Change Schema Name Per Connection

관련 문제