我有struct
包装decimal
所以我可以使用EditorTemplates,具有类型安全性,将来可以扩展以添加Currency
等等:
public struct Price
{
private readonly decimal value;
public Price(decimal value)
{
this.value = value;
}
public static implicit operator Price(decimal value)
{
return new Price(value);
}
public static explicit operator decimal(Price price)
{
return price.value;
}
}
然后在许多使用Fluent NHibernate映射的类型中使用它,例如:
public class SomeEntity
{
public virtual int Id { get; protected set; }
public virtual Price SomePrice { get; set; }
public virtual Price? NullablePrice { get; set; }
}
我怎样才能告诉FNH我什么时候
public SomeEntityMap()
{
this.Id(x => x.Id);
this.Map(x => x.SomePrice);
this.Map(x => x.NullablePrice);
}
这应该只被视为decimal
和Nullable<decimal>
?
最好不必编辑每个映射,因此我不想使用IUserType
,因为这需要(我认为)放在任何地方
this.Map(x => x.SomePrice).CustomType<PriceType>();
this.Map(x => x.NullablePrice).CustomType<NullablePriceType>();
答案 0 :(得分:0)
您希望通过Components以与Following code extract类似的方式实现您的目标:
Component(x => x.Price, m =>
{
m.Map(money => money.Amount, "Price_Amount");
m.Map(money => money.CurrencyCode, "Price_CurrencyCode");
});
组件是将规范化数据映射到可重用实体的完美方法。