RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

DbProviderFactories

Одна из больших новых особенностей ADO.NET 2.0 это использование отражения как средства экземплирования поставщиков БД программно. Информация, используемая .NET, чтобы перечислить доступных провайдеров данных в системе относительно проста. Это просто смотрит в machine.config и в вашем собственном файле app.config некоторые данные XML, чтобы сказать, какие поставщики устанавливаются и в каких assemblies те поставщики находятся.

Сценарий 1:  Независимая версия (не использует Global Assembly Cache)

Этот метод позволяет вам пропускать любую новую версию System.Data.SQLite.DLL в папку вашего приложения и использовать без любых кодовых модификаций или перекомпилирования. Добавьте следующий код к своему файлу app.config:

<configuration>
  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SQLite"/>
      <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>
  </system.data>
</configuration>

Сценарий 2:  Зависит от версии, используя DLL, расположенный в той же самой папке, где приложение, или Global Assembly Cache

Этот метод подробно останавливается на вышеупомянутом XML, чтобы обеспечить номер версии и ключевой символ SQLite DLL, таким образом, это может находиться в той же самой папке, как приложение, или в GAC. Оборотная сторона в том, что DbProviderFactories будет использовать эту информацию о версии, чтобы загрузить только определенную версию. Это означает, что если вы обновляете DLL, необходимо также обновить этот XML.

<configuration>
  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SQLite"/>
      <add name="SQLite Data Provider" invariant="System.Data.SQLite"
         description=".NET Framework Data Provider for SQLite"
         type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite,
         Version=1.0.118.0, Culture=neutral,
         PublicKeyToken=db937bc2d44ff139"/>
    </DbProviderFactories>
  </system.data>
</configuration>

Следующий код C# демонстрирует SQLite через DbProviderFactories:

DbProviderFactory fact = DbProviderFactories.GetFactory("System.Data.SQLite");
using (DbConnection cnn = fact.CreateConnection())
{
  cnn.ConnectionString = "Data Source=test.db3";
  cnn.Open();
}