Запуск Nh 3.2 с использованием SQLite вызывает следующее исключение:

---> NHibernate.HibernateException: не удалось создать драйвер из NHibernate.Driver.SQLite20Driver, NHibernate, Version = 3.2.0.4000, Culture = нейтральный, PublicKeyToken = aa95f207798dfdb4. ---> System.Reflection.TargetInvocationException: исключение было создано целью вызова. ---> System.ArgumentException: не удалось найти запрошенный поставщик данных .Net Framework. Может не быть установлен.

Я использую последнюю (совместимую с net 4) версию SQlite: версия 1.0.74.0. Я добавил в свою конфигурацию следующее:

.Database(SQLiteConfiguration.Standard.InMemory().Raw("hbm2ddl.keywords", "none").ShowSql())

Я также добавил в конфигурационный файл:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0"/>
</startup>

Странно то, что сначала это сработало. И теперь я получаю указанную выше ошибку.

1
halcwb 27 Авг 2011 в 16:58

3 ответа

Лучший ответ

Я исправил проблему, используя решение, указанное выше (спасибо), но также выяснил, что с помощью nuget вы можете просто установить System.data.sqlite прямо в свой проект через диспетчер пакетов, и вам не нужны никакие настройки web.config .

Install-Package System.Data.Sqlite.x86
11
Baldy 12 Янв 2012 в 17:37

Вы наверняка это знаете, но на всякий случай. Последняя версия SQLite для .NET - это Распространяется как 2 dll.

  • System.Data.SQLite.dll
  • SQLite.Interop.dll

Обе библиотеки должны находиться в той же папке, что и ваш EXE. Interop dll зависит от платформы, поэтому вам нужно вручную (или после сборки) скопировать версию x86 или x64 . Следует помнить, что SQLite.Interop.dll зависит от MSVCR100.DLL . Это часть распространяемого пакета Visual C ++ 2010 SP1, вам необходимо убедиться, что он у вас есть. См. Этот ответ.

Также в веб-среде вам может понадобиться такая конфигурация:

<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>
1
Community 23 Май 2017 в 12:26

Используйте версию, поставляемую с двоичными файлами fluentnhibernate 1.0.60.0

0
Eminem 29 Ноя 2011 в 07:34