从DbProviderFactories.GetFactory()

时间:2018-04-04 20:28:32

标签: c# sqlite dbproviderfactories

我需要让DbProviderFactories.GetFactory()返回Sqlite的提供程序。但是,我通过NuGet将Sqlite添加到我的项目中,并希望避免将其放入GAC并更新machine.config。 Sqlite的一个优点是它没有配置。

但是,我有许多库从GetFactory()中提取连接器。

有办法做到这一点吗?

谢谢 - 戴夫

1 个答案:

答案 0 :(得分:1)

您只需要将一个app.config文件添加到您要添加的不变式中即可。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.data>
    <DbProviderFactories>      
      <remove invariant="System.Data.SQLite"></remove>
      <add name="ADO.NET Provider for SQLite"
           invariant="System.Data.SQLite" 
           description="ADO.NET Provider for SQLite " 
           type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite">
      </add>          
    </DbProviderFactories>
  </system.data>
</configuration>

type属性包含提供程序工厂的名称空间和提供程序本身的名称空间。

GetFactory方法首先在本地app.config文件中查找,然后在machine.config中查找。只需确保您确实有对SQLite程序集的引用即可。