【发布时间】:2011-09-06 16:02:40
【问题描述】:
假设我有一个不可变的 ICompositeUserType 来处理 DateRange 或 Money,然后事实证明我有另一个值对象(即不可变),其中包含 DateRange 或 Money 属性值。例如,具有 EffectivePeriod (DateRange) 的名称。
DataRangeUserType 封装了一些我不想重复的逻辑。
我可以在 NameUserType 中重复使用我的 DataRangeUserType 吗?怎么样?
干杯,
浆果
更新
以下是从 NHibernate 源代码中获取的关于 ICompositeUserType 的摘要注释,这表明我认为可以完成,只是不确定如何完成。诚然,组件策略很简单并且效果很好,直到您认为您可能想在其他地方使用相同的组件
/// <summary>
/// A UserType that may be dereferenced in a query.
/// This interface allows a custom type to define "properties".
/// These need not necessarily correspond to physical .NET style properties.
///
/// A ICompositeUserType may be used in almost every way
/// that a component may be used. It may even contain many-to-one
/// associations.
///
/// ...
/// </summary>
使用组件映射
<component name="MyCompositeComponent" class="...">
<property name="Name" not-null="true" length="50"/>
<property name="Price" type="...MoneyUserType">
<column name="Amount"/>
<column name="Currency"/>
</property>
<property name="EffectivePeriod" type="...DateRangeUserType">
<column name="EffectiveStart"/>
<column name="EffectiveEnd"/>
</property>
</component>
【问题讨论】:
标签: nhibernate usertype compositeusertype