2016-10-13 3 views
1

C# Entity Framework 6을 사용하고 있고 여러 스키마가있는 데이터베이스가 있는데이 스키마에는 같은 이름의 테이블이 있습니다. 예를 들어 :C# Entity Framework 6 - 동일한 테이블 이름을 가진 여러 스키마를 처리하는 방법

  1. Rates.Hotel
  2. Availability.Hotel

나는이 구조 내 데이터베이스의 모든 개체에 대해 하나의 프로젝트를 :

Project Name = Storm.API.Data 
In this project I have folders with the schema names: "Availability", "Rates". 
In each folder I have the proper 'edmx' file. 

내가 실행 내 프로젝트이 오류가 발생합니다 :

Schema specified is not valid. Errors: 

The mapping of CLR type to EDM type is ambiguous because multiple CLR types match the EDM 
type 'Hotel'. Previously found CLR type 'Storm.API.Data.Rates.Hotel', 
newly found CLR type 'Storm.API.Data.Availability.Hotel'. 

제가 생각해 낸 유일한 해결책은 스키마를 다른 프로젝트로 분리하는 것입니다.하지만 2 개 이상의 스키마가 있으므로 많은 프로젝트를 만들고 싶지 않습니다.

이 오류없이 같은 프로젝트에서 모든 스키마를 가질 수있는 다른 솔루션이 있습니까?

+0

각 스키마의 모델 브라우저에서 엔터티 유형 이름을 편집 할 수 있습니다. 따라서 가용성 스키마의 유형 Availability_Hotel과 등급 스키마의 Rates_Hotel이 있습니다. –

+0

다른 스키마를 사용하는 것이 도메인을 정의하는 것이므로 별도의 프로젝트를 갖는 것이 좋은 해결책이라고 생각합니다.이 도메인 분리를 별도의 프로젝트를 통해 명확히하는 것이 좋습니다. – SOfanatic

답변

1

당신은 할 수 있습니다

  1. 는 엔티티에 대해 서로 다른 네임 스페이스, 코드
  2. 를 사용하여 2 개 개의 다른 DbContext 클래스에서 그들 각각 다른 클래스 이름을 지정합니다. 이 프로젝트를 다른 프로젝트에 적용할지 여부는 사용자에게 달려 있지만 필수는 아닙니다.
  3. 이 방법이 효과가 있는지는 잘 모르겠지만 한 번만해볼 가치가 있습니다. 모든 스키마에 대해 네임 스페이스를 만들고 1 개의 DbContext에 모든 항목을 포함해야합니다.
+0

1. 모델을 업데이트 할 때 코드가 손실되므로 자동 생성 된 코드에서 클래스 이름을 수동으로 변경하는 것은 좋지 않습니다. 2. 2 DbContext를 동일하게 사용하지 못했습니다. 3. 이것은 내가 처음에 한 일입니다. –