【问题标题】:NHibernate.MappingException occurs when using nullable types使用可空类型时发生 NHibernate.MappingException
【发布时间】:2011-10-14 20:07:58
【问题描述】:

我正在使用 nhibernate 访问我的数据库,andromda 生成我的映射文件。 一切正常,只要我不使用可为空的数据类型。 我正在尝试拥有一个具有 Nullables.NHibernate.NullableInt32Type 类型属性的实体。我的数据库与“int NULL”(SQL Server)类型的列有对应关系。 相应的类也具有正确的数据类型(int?)。 但是当我尝试获取数据库的值时,我得到一个 NHibernate.MappingException:

NHibernate.MappingException : 指定的映射信息无效 对于类型 Namespace.SummaryAttribute,请检查您的映射文件 属性类型不匹配 ----> System.InvalidCastException : Die angegebene Umwandlung ist ungültig。

<?xml version="1.0" encoding="UTF-8"?>
<hibernate-mapping
    xmlns="urn:nhibernate-mapping-2.2"
    default-cascade="none">

    <class
        name="Namespace.SummaryAttribute, Core"
        table="SUMMARY_ATTRIBUTE"
        dynamic-insert="false"
        dynamic-update="false"
        lazy="true">

        <id name="Id" type="Int64" unsaved-value="0">
            <column name="ID" sql-type="NUMERIC(19,0)"/>
            <generator class="native">
            </generator>
        </id>

        <property name="ShortName" type="String">
            <column name="SHORT_NAME" not-null="true" unique="false" sql-type="VARCHAR(255)"/>
        </property>

        <property name="LongName" type="String">
            <column name="LONG_NAME" not-null="true" unique="false" sql-type="VARCHAR(255)"/>
        </property>

        <property name="Description" type="String">
            <column name="DESCRIPTION" not-null="true" unique="false" sql-type="VARCHAR(255)"/>
        </property>

        <property name="IsVisible" type="Boolean">
            <column name="IS_VISIBLE" not-null="true" unique="false" sql-type="BIT"/>
        </property>

        <property name="DecimalPlaces" type="Nullables.NHibernate.NullableInt32Type, Nullables.NHibernate">
            <column name="DECIMAL_PLACES" not-null="false" unique="false" sql-type="INT"/>
        </property>
    </class>
</hibernate-mapping>

没有属性“DecimalPlaces”一切正常。即使我将属性更改为简单数据类型 int。

有人知道问题可能是什么吗?

【问题讨论】:

  • 你用的是什么版本的nhibernate?

标签: nhibernate nullable mappingexception andromda


【解决方案1】:

只需从映射中删除 type 属性即可。 NHibernate 会自己判断类型,所以你应该有:

<property name="DecimalPlaces">
    <column name="DECIMAL_PLACES" not-null="false" unique="false" sql-type="INT"/>
</property>

【讨论】:

  • 我也会先尝试这个......并且还删除了非空、唯一和 sql 类型......使其成为&lt;property name="DecimalPlaces" column="DECIMAL_PLACES"/&gt;
猜你喜欢
  • 2021-05-04
  • 1970-01-01
  • 2017-09-25
  • 2021-10-24
  • 2022-01-08
  • 1970-01-01
  • 2010-10-21
相关资源
最近更新 更多