与SQLite / SubSonic(或任何其他数据库)一起使用时,避免在项目中使用App.config文件

StackOverflow https://stackoverflow.com/questions/1631556

我有一个项目,我正在使用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"/>
有帮助吗?

解决方案

您可以通过在以下位置传递连接字符串来手动创建提供程序:

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

然后您可以在需要时使用该提供程序。这是IoC的理想选择,您可以在其中为SubSonic的IDataProvider设置规则:

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

要爱IoC:)

其他提示

很多库都依赖于app.config,所以无论如何你迟早都需要它。它是整个.NET平台的核心。你认为这是什么问题?

您可以轻松提供自己的连接字符串,但我不太确定在代码中加载特定的ADO.NET提供程序。

这取决于您如何使用SQLite提供程序,但如果它的类被硬编码到您的代码中,那么我认为您甚至不需要DbProviderFactory。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top