2009-06-05 4 views
6

저는 다양한 대형 클라이언트가 웹 사이트에 로그인하고 다양한 페이지를 클릭하여 판매량에 따라 분석 데이터를 볼 수있는 사이트를 만드는 작업을 수행했습니다.현재 로그인 한 사용자를 기반으로 LINQ를 사용하여 다른 데이터베이스를 처리합니까?

사용자를 기반으로 여러 데이터베이스를 처리하는 가장 좋은 방법에 대한 아이디어가 있습니까? 우리는 3 개의 빅 네임 클라이언트를 갖고 있으며, 디자인 결정은 각각의 빅 클라이언트가 자신의 데이터베이스를 가지고 있다고 말하게됩니다.

clientA의 사용자가 Google 시스템에 로그인하면 해당 회사의 분석이 표시되어야하며 모델은 clientA의 데이터 컨텍스트에서 가져와야합니다. 마찬가지로 누군가가 로그인하고 데이터베이스의 clientB와 연결되어 있으면 해당 데이터 컨텍스트에서 데이터를 가져와야합니다.

가능하면 LINQ로 작성된 하나의 데이터 액세스 레이어 클래스가 있고 로그인 할 때 해당 사용자와 관련된 DataContext를 전달할 수있는 방법이 필요합니다. 아무도 이것을 할 수있는 적절하거나 깨끗한 방법을 생각할 수 있습니까?

+0

스키마가 모든 데이터베이스에서 동일합니까? – BFree

+0

@BFree, 내가 수행 할 쿼리가 동일 할 것입니다. 그들은 결국 두 열에 의해 다를 수 있지만 LINQ 쿼리에 관해서는 실행하지 않을 것입니다. –

+0

@ 탱크 맨, 당신이하는 일은 데이터베이스 샤딩이라고합니다. – tuinstoel

답변

9

스키마가 모든 데이터베이스에서 동일하면 매우 간단합니다. datacontext에는 연결 문자열을 사용하는 오버로드가 있습니다. 중앙 집중식 위치 (데이터베이스, XML, 리소스 등)에 다양한 연결 문자열을 저장 한 다음 해당 연결 문자열로 하나의 datacontext를 만든 다음 연결 대상에 상관없이 사용할 수 있습니다.

+0

내가 가진 질문은 datacontext를 바꾸거나 특정 사용자를 기반으로 다른 것을 사용하는 것입니다. –

+0

BFree에 동의합니다. 피벗 포인트가 연결 문자열이됩니다. –

+0

@ TankMan : 모두 연결 문자열에 있습니다. 다른 사용자가 연결되어 있음을 감지하면 연결 문자열을 가져 와서 해당 연결 문자열로 DataContext를 새로 작성하십시오. – BFree

관련 문제