我有一个项目,我正在使用SQLite和SubSonic 3开发。我想知道如何完全避免App.config文件。如何告诉我的程序使用SQLite数据提供程序。我的意思是,我该怎么说呢:
<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"/>
答案 0 :(得分:4)
您可以通过在以下位置传递连接字符串来手动创建提供程序:
var p = ProviderFactory.GetProvider("connectionstring", "System.Data.SqlClient");
然后您可以在需要时使用该提供程序。这是IoC的理想选择,您可以在其中为SubSonic的IDataProvider设置规则:
ForRequestedType< IDataProvider >()
.TheDefault.Is.ConstructedBy(x =>
ProviderFactory.GetProvider("connectionstring", "System.Data.SqlClient"));
要爱IoC:)
答案 1 :(得分:1)
很多库都依赖于app.config,所以无论如何你迟早都需要它。它是整个.NET平台的核心。你认为这是什么问题?
您可以轻松提供自己的连接字符串,但我不太确定在代码中加载特定的ADO.NET提供程序。
这取决于您如何使用SQLite提供程序,但如果它的类被硬编码到您的代码中,那么我认为您甚至不需要DbProviderFactory。