1000 + 테이블, 또 다른 수백 개의 뷰 및 수천 개의 저장 프로 시저가있는 SQL Server 데이터베이스로 작업하고 있습니다. 우리는 새로운 프로젝트에 Entity Framework를 사용하기 시작하고 있으며이를위한 전략을 연구하고 있습니다. 내가 끊은 것은 테이블을 다른 모델로 나누는 가장 좋은 방법입니다 (먼저 코드를 작성하면 EDMX 또는 DbContext). 나는 바로 몇 가지 전략을 생각할 수 있습니다.
- 스키마로 분할
우리는 아마도 12 개의 스키마로 테이블을 분할했습니다. 스키 마당 하나의 모델을 수행 할 수 있습니다. 그러나 dbo는 여전히 500 + 테이블 / 뷰로 인해 매우 커지기 때문에 완벽하지 않습니다. 또 다른 문제는 특정 작업 단위가 여러 모델에 걸쳐 트랜잭션을 수행해야하기 때문에 복잡해 지지만 EF가이를 매우 간단하게한다고 가정합니다. - 의도별로
분할 스키마를 걱정하지 않고 모델을 의도별로 분할합니다. 따라서 우리는 세부적인 방법에 따라 각 응용 프로그램, 프로젝트 또는 모듈 또는 화면에 대해 서로 다른 모델을 갖게됩니다. 내가 볼 때 문제는 User 또는 AuditHistory와 같은 모든 경우에 필연적으로 사용해야하는 특정 테이블이 있다는 것입니다. 우리는 그것들을 모든 모델에 추가합니까 (제 생각에 DRY 위반) 또는 모든 프로젝트에서 사용되는 별도의 모델에 있습니까? - 전혀 분리하지 마십시오-하나의 거대한 모델
이것은 개발 관점에서 분명히 간단하지만 제 연구와 직관에 따르면 디자인 타임, 컴파일 타임 및 런타임에 끔찍하게 수행 할 수있는 것처럼 보입니다.
이러한 큰 데이터베이스에 대해 EF를 사용하는 가장 좋은 방법은 무엇입니까? 특히 사람들이이 DB 객체 볼륨에 대한 모델을 설계 할 때 어떤 전략을 사용합니까? 내가 생각하지 않은 옵션이 위에있는 것보다 낫습니까?
또한 이것은 NHibernate와 같은 다른 ORM에서 문제입니까? 그렇다면 EF보다 더 나은 솔루션을 찾게 되었습니까?