NHibernate.使用可空类型时会发生MappingException



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

NHibernate。MappingException:指定的映射信息无效类型命名空间。属性,在映射文件中检查属性类型不匹配——>系统。InvalidCastException: Die angegebene Umwandlung ist un 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。

有谁知道是什么问题吗?

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

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

相关内容

  • 没有找到相关文章

最新更新