wes*_*ton 4 c# nhibernate fluent-nhibernate
我正在将一个简单的工作演示从nhibernate移植到流畅.我现有的nhibernate映射是这样的:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="MoneyHibernate"
namespace="MoneyHibernate">
<class name="Invoice" table="Invoices">
<id name="Id">
<generator class="guid"/>
</id>
<property name="Number"/>
<property name="Customer"/>
<property name="TotalValue" type="MoneyHibernate.MoneyCompositeUserType,MoneyHibernate">
<column name="TotalValue_Amount" not-null="true" />
<column name="TotalValue_Currency" length="3" not-null="true" />
</property>
</class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)
我试图创建equlivilant ClassMap:
internal class InvoiceMap : ClassMap<Invoice>
{
public InvoiceMap()
{
Id(x => x.Id);
Map(x => x.Customer);
Map(x => x.Number);
Map(x => x.TotalValue)
.CustomType(typeof (MoneyCompositeUserType))
.Column("TotalValue_Amount")
.Column("TotalValue_Currency");
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
---> NHibernate.MappingException:属性映射列数错误:MoneyHibernate.Invoice.TotalValue类型:MoneyHibernate.MoneyCompositeUserType
所以我认为两次声明列不是正确的方法吗?
您正在以正确的方式执行此操作,但是,您需要Columns.Clear()在手动声明列之前添加到映射中,如下所示:
Map(x => x.TotalValue)
.CustomType(typeof (MoneyCompositeUserType))
.Columns.Clear()
.Columns.Add("TotalValue_Amount", "TotalValue_Amount");
Run Code Online (Sandbox Code Playgroud)
否则,除了用于复合用户类型映射的列集合之外,nHibernate还将追加新列名称(因此错误的列数异常).
| 归档时间: |
|
| 查看次数: |
685 次 |
| 最近记录: |