【问题标题】:nHibernate & sqlite mappingsnHibernate 和 sqlite 映射
【发布时间】:2010-02-18 21:42:11
【问题描述】:

我在使用 sqlite 设置 nHibernate 时遇到了真正的问题。

这里是 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 32 位。

我已添加 System.Data.SQlite 程序集并设置为复制本地。

有什么建议吗?

【问题讨论】:

    标签: visual-studio-2008 nhibernate sqlite nhibernate-mapping mapping


    【解决方案1】:

    我很久以前就修复了这个问题,现在不记得我到底做了什么:o(

    但是,查看代码:我注意到映射文件的这种更改,我将 Id 的标记从整数更改为 Int32,并将生成器类从增量更改为原生:

    <id name="Id" type="Int32" unsaved-value="0">
      <generator class="native"/>
    </id>
    

    【讨论】:

      【解决方案2】:

      您是否在程序集中嵌入了 hbm.xml 文件?

      取自https://www.hibernate.org/362.html

      注意:如果您使用 Visual Studio .NET 进行编译,请确保将 User.hbm.xml 文件的 Build Action 设置为 Embedded Resource。映射文件现在将成为程序集的一部分。细微的细节的重要性将在稍后显而易见。

      【讨论】:

      • 我已经嵌入了 hbm.xml 文件。该应用程序使用 SqlServerCE 作为数据库,但我正在尝试切换到 SQLite。
      【解决方案3】:

      在您的图书映射文件中,设置如下属性:

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

      还要确保您在上述名称属性中的值与您的类的大小写相同。

      【讨论】:

        猜你喜欢
        • 2011-08-07
        • 2012-10-19
        • 2011-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多