2009-11-19 4 views
0

내 프로그램에서 버그가 발생했습니다. SubSonic3이 기본 연결 문자열SubSonic 및 기본 연결 문자열 문제가 아닙니다.

SingleOrDefault(ByVal expression As System.Linq.Expressions.Expression(Of System.Func(Of Company.filter, Boolean)), ByVal connectionString As String, ByVal providerName As String) 

로 레코드를 반환하기 때문에 Subsonic 소스에서 Database.cs 줄 323 :

instance = Activator.CreateInstance<T>(); 

문제의 원인은 다음과 같습니다. 내 경우. 기본 생성자를 사용하여 인스턴스를 만든 다음 결과로 반환합니다. 즉, 사용자 지정 연결 문자열이 느슨합니다.

개인적으로 ConnectionString 인수가있는 SingleOrDefault 함수에서 ActiveRecord.tt 템플릿에 2 줄을 추가하여이 문제를 해결했습니다.

   single._db=new <#=Namespace#>.<#=DatabaseName#>DB(connectionString, providerName); 
      single._repo = new SubSonicRepository<<#=tbl.ClassName#>>(single._db); 

하지만이 문제를 더 자세히 조사해야한다고 생각합니다. :)

답변

0
를 롭 :) 생각

나는 따라 가지 않는다. ConnectionString의 이름을 Settings.tt로 지정하십시오 - 우리가 사용하는 이름입니다.

+0

예, 기본 연결 문자열입니다. 그리고 사용자 지정 ConnectionString 매개 변수와 함께 호출 된 SingleOrDefault 함수는 잘못된 데이터베이스를 가리키는 레코드를 반환합니다. 예를 들어, 동일한 구조를 가지고 있지만 별도로 사용되는 여러 데이터베이스가 있습니다. 내가 Company1과 Company2 데이터베이스를 가지고 있다고하자. record.SingleOrDefault (x => x.name = "joe", GetConnectionStringForCompany2, ProviderName)를 사용하면 Company1 데이터베이스를 가리키는 레코드 개체를 반환하지만 Company2 데이터베이스의 연결 문자열을 전달했습니다. 상황을 설명하기를 바랍니다. – Nickname