FluentNhibernate и SQLite

Я не могу заставить драйвер 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;
            }
        }

Вот как я генерирую конфигуратор

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

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 дня.

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

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

Чарльз


person Charles Ouellet    schedule 10.05.2009    source источник


Ответы (5)


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

person Aaron Fischer    schedule 02.06.2009
comment
System.Data.SQLite.dll имеется для x64, это просто еще одна сборка (которая включена в директорию x64) - person Mauricio Scheffer; 03.06.2009
comment
+1 это решило проблему для меня (даже использование dll x64 из SQLite, похоже, не сработало) - person Ben Aston; 29.06.2010
comment
у меня тоже сработало (изменил целевую платформу на x86 на вкладке сборки свойств проекта в сравнении с 2010) - person Dimitris Baltas; 22.01.2012

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

Теперь это работает очень хорошо.

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

person Charles Ouellet    schedule 10.05.2009

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

person Christian Waidner    schedule 20.11.2010

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

Машина сборки 32-битная, моя локальная машина 64-битная. Мы используем сборку из ствола Fluent NHibernate.

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

person Colin Bowern    schedule 03.06.2009
comment
Привет, у меня точная проблема! Моя сборочная машина тоже 64-битная, это единственная разница. Мои тесты также терпят неудачу при локальном запуске через командную строку, но проходят через VS. Как вы это исправили, пожалуйста? Что вы имеете в виду, говоря, что я обновил localtestrun.config, чтобы включить их в раздел «Развертывание», и как мне это сделать, пожалуйста? - person iamserious; 21.10.2013
comment
@iamserious, насколько я помню, не все необходимые сборки копировались. Используя параметры развертывания в конфигурации тестового запуска, вы можете убедиться, что для его запуска есть все необходимые биты. - person Colin Bowern; 22.10.2013

Эта проблема должна быть устранена с помощью последнего пакета NuGet от Microsoft.

PM> Install-Package SQLitePCL

https://www.nuget.org/packages/SQLitePCL/3.8.2

http://msopentech.com/blog/2014/02/03/new-open-source-portable-class-library-sqlite/

person Eric    schedule 20.02.2014