我使用nhibernate访问我的数据库,而andromda生成我的映射文件。 一切正常,只要我没有使用可空数据类型。 我想要的是拥有一个类型为Nullables.NHibernate.NullableInt32Type的实体。我的数据库与“int NULL”(SQL Server)类型的列具有对应关系。 相应的类也具有正确的数据类型(int?)。 但是当我尝试获取数据库的值时,我得到一个NHibernate.MappingException:
NHibernate.MappingException:指定的映射信息无效 对于Namespace.SummaryAttribute类型,请检查您的映射文件 财产类型不匹配 ----> System.InvalidCastException:Die angegebene Umwandlung istungngltig。
<?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。
有没有人知道问题可能是什么?
答案 0 :(得分:5)
从映射中删除type
属性。 NHibernate会自己弄清楚类型,所以你应该有:
<property name="DecimalPlaces">
<column name="DECIMAL_PLACES" not-null="false" unique="false" sql-type="INT"/>
</property>