2011-01-28 2 views
1

기본 데이터베이스 (일부 전역 항목)와 파일 (기본적으로 sqlite 파일)이있는 프로젝트를 만듭니다.Castle ActiveRecord 사용중인 데이터베이스 변경

가끔 사용자가 "열기"를 클릭하고 새 파일을 선택하면 응용 프로그램이이 새 데이터베이스를로드하게됩니다.

는 사실 내가이 개 구성 파일 그러나 http://www.darkside.co.za/archive/2008/01/21/castle-activerecord-connecting-to-multiple-databases.aspx

,이 문제가 함께 작동하도록 관리 :이 글로벌 것들에 대한 확인이 될 수있는 동안 첫째, 암호는 그렇지, 파일에 대한 아주 좋은 XML 파일에 분명하다 사용자가 만든 것입니다 (여전히 실제 문제인지 여부는 모르겠지만 파일 암호를 원하는지 묻습니다). (! 그래 난 경로를 변경해야합니다)

otherone이 연결 문자열은 각 파일에 대한 다를 것입니다, 그래서 2 가지 방법으로 작업 할 수 있습니다 DB를의 로컬 복사본을 만들기

  • 때 사용자 프레스는 데이터베이스가 이전 한
  • 복사됩니다 "저장"나는 앞으로 DifferentDatabaseScope을 찾고 있어요

를 연결 문자열을 변경하거나 "런타임의"구성을로드 할 수있는 방법을 찾기하지만 이해가 안 돼요 : 어디에 모든 NHibernate 구성을 지정합니까? 내가 이것을 사용한다면? (연결 개체 만 전달하면됩니다 !!!)

답변

0

castle activerecord start를 제외하고는 사용중인 데이터베이스를 직접 변경할 수있는 방법이 없습니다.

0

NHibernate에 구성은 당신이

DifferentDatabaseScope를 사용하여 사용 DifferentDatabaseScope

의 기록을 얻기 위해 사용하는 단지 코드를 포장, 쿼리를 수행하는 같은 액티브 클래스를 사용하는 것 같은 것 사용할 다른 옵션은 DifferentDatabaseScope 클래스입니다. 이 클래스는 생성자에서 IDbConnection 객체를 가져와 열어야하며이 데이터베이스 연결을 사용하여 데이터 검색을 시도합니다.

현재 (RC3 빌드에서) 이것은 총알 증명이 아니라는 의견이 있습니다. 나는 그들이 코멘트에서 "아직"중단했다라고 확신한다.

코드에서이 일의 예는 다음과 같습니다

IDbConnection connection = new SqlConnection("Data Source=.;Initial Catalog=TestB;Integrated Security=SSPI"); 

connection.Open(); 

using (new DifferentDatabaseScope(connection)) 

{ 

    TestTableDatabaseA test3 = TestTableDatabaseA.Find(1); 

    Console.WriteLine(test3.Title); 

} 
관련 문제