2009-10-27 3 views
3

SQLite 및 SubSonic 3으로 프로젝트를 만들었습니다. App.config 파일을 어떻게 피할 수 있는지 알고 싶습니다 전부. SQLite 데이터 공급자를 사용하도록 프로그램을 어떻게 말합니까?SQLite/SubSonic (또는 다른 데이터베이스)을 사용할 때 프로젝트에 App.config 파일 사용하지 말것

<DbProviderFactories> 
    <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite"> 
</DbProviderFactories> 

또한 내가 코드에 의해 연결 문자열을 추가 할 수 있습니다 :

<add name="xyz" connectionString="Data Source=xyz.db" providerName="System.Data.SQLite"/> 

답변

4

: 당신이 필요로 할 때

var p = ProviderFactory.GetProvider("connectionstring", "System.Data.SqlClient"); 

그런 다음 해당 공급자를 사용할 수 있습니다.

ForRequestedType<IDataProvider>() 
    .TheDefault.Is.ConstructedBy(x => 
     ProviderFactory.GetProvider("connectionstring", "System.Data.SqlClient")); 

꼭 IOC의 :

+0

와우 롭. 그것은 완벽하게 작동합니다. 감사. :) – Yogesh

+0

SubSonic 2에서도 비슷하게 할 수 있습니까? – Rory

1
라이브러리의 많은이의 app.config에 의존

, 조만간 당신은 그래서 나는 어떻게이 그것을 말할 수있는, 의미 어쨌든 그것을 필요로 할 것입니다. 그것은 전체 .NET 플랫폼의 핵심입니다. 그리고 문제가 무엇이라고 생각합니까?

쉽게 자신의 연결 문자열 을 제공 할 수 있지만 특정 ADO.NET 공급자를 코드 에로드하는 것에 대해서는 확신 할 수 없습니다.

SQLite 공급자를 사용하는 방법에 따라 다르지만 클래스에 코드가 하드 코드되어 있으면 DbProviderFactory가 필요하지 않다고 생각합니다.

당신의 연결 문자열을 전달하여 수동으로 공급자를 만들 수 있습니다
+0

Yes (예)를 사랑 : 당신이 설치 음속의 IDataProvider에 대한 규칙을 수있는 곳은 IOC의 이상적입니다. 내가 아는 한 심지어 커스텀 ConfigurationSection을 아주 광범위하게 사용했다. 사실, 내가이 응용 프로그램에 대한 레지스트리에 대한 설정 파일을 드롭 싶었어요. 하지만 이제는 어쨌든 그것을 사용하기로 결정했습니다. 그래도 나는 그것이 가능하다는 것을 알고 싶다. – Yogesh

관련 문제