FluentNhibernate и SQLite - PullRequest
       17

FluentNhibernate и SQLite

5 голосов
/ 10 мая 2009

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

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

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

Charles

Ответы [ 5 ]

10 голосов
/ 02 июня 2009

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

7 голосов
/ 10 мая 2009

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

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

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

1 голос
/ 20 ноября 2010

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

0 голосов
/ 20 февраля 2014

Эта проблема должна быть исправлена ​​в последнем пакете 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/

0 голосов
/ 03 июня 2009

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

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

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

...