2010-02-24 4 views
1

우리의 POCO 개체를 대체하기 위해 SubSonic 3.0을 사용중인 것으로 평가하고 있습니다. 나는 SubSonic에 처음이다. 문자 그대로 어제 그것을 설치했다. 3.0 LINQ T4 템플릿을 사용하여 하나의 데이터베이스에 연결할 수 있고 SubSonic을 사용하여 하나의 응용 프로그램에서 여러 데이터베이스에 연결할 수 있다는 약속에 기대를 걸었습니다.Subsonic 3.0 다중 데이터베이스가있는 LINQ 템플릿

문제점 (예 : 다른 연결 문자열 추가, Settings.ttinclude 설정 등)에서 T4 템플릿을 여러 데이터베이스와 함께 사용하는 방법에 대한 문서를 찾을 수 없습니다.

Google 및 Stackoverflow를 검색하여이를 어떻게 수행 할 것인지 아니면 가능할지를 확인했습니다. 어떤 도움을 주시면 감사하겠습니다.


그래서 나는 그것이 Web.config의 또 다른 ConnectionString을 추가 한 다음 해당 ConnectionString을, 작동을위한 템플릿 2 세트를 추가하여 작업을 할 수있을 듯하지만, 깨끗 '하지 않는 것 '아니면 나에게 정말 말랐어.

또한 .NET. LINQ에서 여러 .dbml 파일을 추가하여 거의 동일한 작업을 수행 할 수 있습니다.

누군가 나에게 왜 우리가 SubSonic과 같은 타사 ORM보다 내장 LINQ 지원을 사용해서는 안되는 지 추론 할 수 있습니까?

답변

5

크로스 포스팅 :

오, 그래 나는이 모든 시간을, 트릭이 템플릿의 두 복사본 (쉬운) 또는 템플릿을 편집 테이블의 두 세트를 반복하는 것입니다 (열심히) . 두 번째 settings.tt에서 다른 데이터베이스를 반영하도록 연결 문자열의 이름을 변경하십시오. 네임 스페이스를 변경하여 테이블 이름이 같은 곳에서 충돌이 일어나지 않도록 할 수도 있습니다. 그것은 해커처럼 보이지만 그것은 당신이 독립적으로 각 데이터베이스에 대한 템플릿을 변경할 수 있기 때문에 그것이라고 생각하지 않습니다.

실제로 템플릿을 하나만 사용하려는 경우 SQLServer.tt (또는 데이터베이스 선택)를 편집하고 LoadTables의 작동 방식을 재정의하여 템플릿 목록 대신 연결 목록을 수락하는 것이 가장 쉽습니다 하나 하나. 나는 이것이 고통이고 그것이 파일의 2 개의 사본을 갖는 것보다 훨씬 어려울 것이라고 말해야한다.

+0

안녕하세요, 저는이 문제에 매우 익숙합니다.이 "settings.tt로 다른 데이터베이스를 반영하기 위해 연결 문자열의 이름을 변경하십시오"라고 말하고 싶지 않습니다. 어떻게 할 수 있습니까? 다른 폴더에 2 세트의 t4 템플릿을 만들고 구성했지만 여전히 작동하지 않습니다.로드 된 첫 번째 데이터베이스에있는 모든 저장 프로 시저를 인식하지 못합니다. 사실, 그것은 내가 가지고있는 저장 프로 시저를 인식하지만 매개 변수는 인식하지 못합니다. 감사합니다 – vikitor

+0

좋은 솔루션, 각 DB에 대해 별도의 템플릿 세트를 사용합니다. 이 덕분에 많은 도움이되었습니다.내가 가진 유일한 문제는 두 DB에서 같은 이름의 테이블을 사용하는 것입니다. 나는 이것을 제외하고 settings.ttinclude 파일의 CleanUp() 메쏘드에서 이름을 오버라이드함으로써 예외 상황을 극복했다. – GShenanigan

1

(질문의 답변에 대한 응답에서)

사람이 나에게 난 그냥 음속과 같은 제 3 자 ORM을 통해 LINQ에 내장 사용하지 말아야 왜이 시점에서 몇 가지 추론을 줄 수 있습니까?

즉시 생각해 보면 : SubSonic은 Microsoft SQL Server 이상의 것을 지원합니다.

아음속 메일 링리스트에서
+0

Microsoft의 상점이므로 Microsoft SQL Server를 통해 100 %의 데이터베이스 상호 작용이 발생합니다. SubSonic은 여러 RDBMS를 지원하며 향후에는 지원이 필요할 수도있는 상황이 발생할 수 있지만 현재로서는 걱정할 필요가 없습니다. –