nHibernate и sqlite отображения - PullRequest
1 голос
/ 03 октября 2009

У меня реальные проблемы с настройкой nHibernate с sqlite.

Вот файл hibernate.cfg.xml:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="dialect">NHibernate.Dialect.SQLite20Dialect</property>
    <property name="connection.driver_class">NHibernate.Driver.SQLite20Driver</property>
    <property name="connection.connection_string">Data Source=books.db;Version=3</property>
    <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
    <property name="query.substitutions">true=1, false=0</property>

    <property name="show_sql">true</property>
    <property name="format_sql">true</property>


  </session-factory>
</hibernate-configuration>

и вот (упрощенный) файл сопоставления:

 <?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly ="DataAccess" namespace="DataAccess.DOM">
  <class name="Book" table="book">
    <id name="id" type="integer" unsaved-value="null">
      <generator class="increment"/>
    </id>

    <property name="isbn" type="string" length="25"/>
    <property name="author" type="string" length="100"/>

  </class>
</hibernate-mapping>

Таблица:

create table book(
  id INTEGER primary key,
  author TEXT,
  isbn TEXT,
);

Я получаю ошибку: «Не удалось скомпилировать документ сопоставления: DataAccess.DOM.Book.hbm.xml»

Я работаю в VS2008 на Vista 32bit.

Я добавил сборку System.Data.SQlite и настроил копирование локально.

Есть предложения?

Ответы [ 3 ]

2 голосов
/ 18 февраля 2010

Я исправил это давным-давно, и теперь не могу вспомнить точно, что я сделал: o (

Однако, глядя на код: я заметил это изменение в файле отображения, я изменил тег для идентификатора с целого на Int32, а класс генератора с приращения на собственный:

<id name="Id" type="Int32" unsaved-value="0">
  <generator class="native"/>
</id>
1 голос
/ 03 октября 2009

Вы встроили файл hbm.xml в сборку?

Взято из https://www.hibernate.org/362.html:

ПРИМЕЧАНИЕ. Если вы используете Visual Studio .NET для компиляции, убедитесь, что для параметра «Создать» файла User.hbm.xml установлено значение «Встроенный ресурс». Файл сопоставления теперь будет частью Asssembly. Важность тонких деталей станет очевидной позже.

0 голосов
/ 11 февраля 2010

В вашем файле отображения книги установите свойства следующим образом:

<property name="isbn" column="isbn"/>
<property name="author" column="author"/>

Также убедитесь, что ваши значения в вышеприведенных атрибутах имени совпадают с регистром вашего класса.

...