저는 Asp.Net Core 및 Entity Framework Core를 사용하여 새로운 REST API를 개발 중입니다. 우리는 수평 데이터베이스 파티셔닝 (샤딩)을 사용하는 레거시 시스템에서 데이터를 포팅 할 것입니다. 나는 EF Core에서 이것을 처리하는 좋은 방법을 생각하려고 노력하고있다. 이전의 샤딩 전략에는 중앙 프라임 데이터베이스와 여러 고객 데이터베이스가 포함되었습니다. 모든 검색어에 CustomerId
이 포함되었습니다. Prime 데이터베이스에 CustomerId를 쿼리하여 특정 고객의 데이터가 포함 된 고객 데이터베이스를 확인합니다. 데이터베이스 스키마는 다음과 같이보고 :엔티티 프레임 워크 코어를 사용하여 전략 나누기
프라임 데이터베이스
dbo.Database
DatabaseId INTEGER
ConnectionString VARCHAR(200)
dbo.Customer
CustomerId BIGINT
DatabaseId INTEGER
고객 데이터베이스를
dbo.Order
CustomerId BIGINT
OrderId INT
...
http://foo.com/api/Customers/{CustomerId}/Orders/{OrderId}
나는 내 필요가있다 CustomerDbContext
은 각 REST 요청과 함께 동적으로 결정된 연결 문자열을 사용합니다. 각 요청마다 DbContext
의 새 인스턴스를 생성해야합니까? 또는 런타임에 연결 문자열을 변경할 수 있습니까?
새 DbContext를 만드는 경우 어떻게해야합니까? 찾을 수있는 예제 코드의 대부분은 Startup.cs에서 Dependency Injection을 사용하여 DbContext
이라는 싱글 톤을 만듭니다.