.NET MVC 3 및 PetaPoco를 사용하여 공유 데이터베이스로 멀티 테넌트 응용 프로그램을 작성합니다. 임차인 ID (다른 정보와 함께)는 로그인시 FormsAuth 쿠키에 저장되며 BaseController 속성을 통해 모든 컨트롤러에서 사용할 수 있습니다. 대부분의 테이블 (즉, 주요 '임차인'테이블을 제외하고)에는 TenantId 열이 포함됩니다.WHAT 절을 동적으로 PetaPoco에 "삽입"
수동으로 'WHERE TenantId = X'를 피쳐 테이블의 모든 CRUD에 추가하는 대신 실행 직전에 쿼리에 동적으로 추가 할 수있는 방법이 있습니까? 즉, 아마도 테이블의 목록을 유지하고 쿼리가 이러한 테이블 중 하나에 대한 것이면 동적으로 TenantId 필터를 추가할까요?
물론 이점은 필터를 수동으로 추가 할 필요가 없으므로 남은 기회가 줄어 듭니다. 나는 example using NHibernate을 찾았는데, 나는 그것이 용도 변경 될 수 있을지 의심 스럽다. 내가 차이를 만드는 경우에는 Ninject를 사용하고 있습니다.
앱과 함께 저장하려고하는 데이터의 종류입니다. 이런 식으로 동적 SQL을 사용할 때 보안/SQL 주입 위험이있을 수 있습니다. –
일반적으로 그렇지만 우리는 매개 변수화 된 SQL (PetaPoco는 기본적으로 그렇게 사용하고 있습니다)을 사용하고 있으므로 문제가되지 않습니다. 실제 질문과 관련이없는 게시물에 대해서는 언급하지 않았습니다. 그러나 그것을 지적 해 주셔서 감사합니다 :) – seekay
좋은 거래. 나는 PetaPoco에 익숙하지 않아서 내가 처음 보았을 때 감동을 받았다. :) –