>source

Net Core 5 Web API 응용 프로그램에서 기본 dbcontext에서 얻은 정보로 보조 dbcontext의 연결 문자열을 변경해야 합니다.

두 가지 dbcontext가 있습니다.

DbContextMaster-정적 연결 문자열

DbContextChild-동적 연결 문자열입니다. 다음과 같이 앱 설정에서 템플릿을 사용합니다.

"DbContextChild": "데이터 소스=서버;초기 카탈로그={dbName};통합 보안=False;사용자 ID=사용자 이름;비밀번호="

응용 프로그램을 시작할 때:

  1. 테넌트를 식별하기 위한 헤더 매개변수를 얻었습니다(지금까지는 괜찮음).

  2. 데이터베이스 이름을 가져오려면 DbContextMaster를 사용하여 이 매개변수로 쿼리를 수행해야 합니다. 테넌트를 식별하는 헤더 매개변수의 값이 이 데이터베이스에 존재하지 않으면 badRequest를 반환해야 합니다. 존재하는 경우 테넌트의 데이터베이스 이름으로 DbContextChild 템플릿을 변경해야 컨트롤러가 DbContext Child에서 데이터를 가져옵니다. 요청에 응답합니다.

이러한 구현을 수행하는 방법에 대해 많은 질문이 있습니다. 위의 검사를 수행하여 모든 컨트롤러의 호출을 가로챌 수 있는 방법이 있습니까? 아니면 기본 컨트롤러가 있어야 하고 다른 모든 사람이 이를 상속해야 합니까?

런타임에 appsetting.json 업데이트를 실현하는 데 문제가 있습니까? 이 답변이 도움이 될까요?

Tiny Wang2021-09-22 15:18:11

appsettings의 내용을 변경할 필요가 없습니다. 구성 파일에 연결 문자열 템플릿이 있습니다. 헤더를 통해 전송된 테넌트 매개변수에 따라 연결 문자열 매개변수는 해당 특정 테넌트에 속한 데이터베이스 이름으로 바뀝니다.

Marcoscdoni2021-09-21 17:47:28

답장을 보내주셔서 감사합니다.

Tiny Wang2021-09-22 01:42:12
  • 이전 python : 문서에서 키워드를 허용하지 않는 플롯 표현 라인 차트
  • 다음 powershell 병렬로 임계값 증가