5

Я не могу заставить драйвер SQLite работать в моей сессии.FluentNhibernate и SQLite

Я скачал SQLite 1.0.48 из http://sqlite.phxsoftware.com/

Я добавил ссылки на System.Data.SQLite в моем проекте Tests.

public static IPersistenceConfigurer GetSqlLiteConfigurer() 
     { 
      try 
      { 
       return SQLiteConfiguration 
       .Standard 
       .InMemory(); 
      } 
      catch (Exception ex) 
      { 
       throw ex; 
      } 
     } 

Это, как я генерировать Configurer

Проблема заключается в том, когда я строю свою SessionFactory я получаю следующее сообщение об ошибке:

NHibernate.HibernateException: The IDbCommand and IDbConnection implementation in the assembly System.Data.SQLite could not be found. Ensure that the assembly System.Data.SQLite is located in the application directory or in the Global Assembly Cache. If the assembly is in the GAC, use <qualifyAssembly/> element in the application configuration file to specify the full name of the assembly. 
at NHibernate.Driver.ReflectionBasedDriver..ctor(String driverAssemblyName, String connectionTypeName, String commandTypeName) 
at NHibernate.Driver.SQLite20Driver..ctor() 

Я пытался изменить в SQLite версии, но не сделал исправить проблему.

Я не могу найти, в чем проблема, и я работаю над этим в течение 2 дней.

Дайте мне знать, если вам нужна дополнительная информация.

Спасибо за помощь!

Чарльз

ответ

7

Я установил мою проблему, получив файл System.Data.SQLite.dll, который находится в FluentNHibernate SVN Repository.

Это сейчас работает очень хорошо.

Я должен проверить это раньше;)

+0

Спасибо. Это решило проблему для меня. – statenjason

+0

Теперь доступен как пакет NuGet http: // nuget.org/List/Packages/SQLitex64 –

10

Когда я столкнулся с этой проблемой, это было вызвано работы, имеющий множество процессоров свойства моего приложения к AnyCPU и работает на 64-битной системе. Чтобы исправить проблему, я установил для своего процессора свойство x86. Я не думаю, что System.Data.SQLite.dll поддерживает работу под управлением x64.

+2

System.Data.SQLite.dll * * доступен для x64, это просто еще одна сборка (которая входит в каталог x64) –

+0

+1 это решило проблему для меня (даже с использованием x64 dll из SQLite, похоже, не работает) – Ben

+0

работал для меня тоже – Kevin

0

Я нахожу такую ​​же проблему на машине сборки. Он отлично работает, когда я открываю проект с помощью Visual Studio, но когда я запускаю mstest.exe, он не работает с указанной выше ошибкой. Он также терпит неудачу на моей локальной машине разработки, когда я запускаю командную строку. Process Monitor не показывает попыток даже найти файл mstest.exe.

Строительная машина 32-разрядная, моя локальная машина - 64-разрядная. Сборка, которую мы используем, является той, что имеется в магистрале Fluent NHibernate.

ОБНОВЛЕНИЕ: отобразилось - mstest.exe не копировал все сборки, когда он запускался из командной строки. Я обновил localtestrun.config, чтобы включить их в раздел «Развертывание». Не знаете, почему поведение отличается от поведения IDE и командной строки.

+0

Привет, у меня есть точная проблема ! Моя сборная тоже 64-битная, но это единственное отличие. Мои тесты терпят неудачу при запуске локально, через командную строку, но проходят через VS. Как вы это исправили? Что вы подразумеваете под «Я обновил localtestrun.config, чтобы включить их в Deployment» и как мне это сделать, пожалуйста? – iamserious

+0

@iamerious, если я помню, что не все необходимые сборки были скопированы. Используя настройки развертывания в вашей конфигурации тестового запуска, вы можете обеспечить, чтобы все необходимые биты были доступны для его запуска. –

+0

Колин, ладно, спасибо! – iamserious

1

Проверьте, используете ли вы 4.0 в качестве целевой среды. В настоящее время ADO-драйвер (1.0.66) поддерживает только 3.5.

Смежные вопросы