SQLite выдает исключение с NH 3.2 - PullRequest
1 голос
/ 27 августа 2011

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

---> NHibernate.HibernateException: Не удалось создать драйвер из NHibernate.Driver.SQLite20Driver, NHibernate, Версия = 3.2.0.4000, Культура = нейтральная, 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())

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

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

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

Ответы [ 3 ]

11 голосов
/ 12 января 2012

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

Install-Package System.Data.Sqlite.x86
1 голос
/ 28 августа 2011

Вы, наверное, знаете это, но на всякий случай. Последняя версия 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>
0 голосов
/ 29 ноября 2011

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

...