gpt4 book ai didi

c# - 将结构映射为一种类型(可以为空)

转载 作者:行者123 更新时间:2023-11-30 18:27:23 27 4
gpt4 key购买 nike

我有一个 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);
}

这应该被视为 decimalNullable<decimal>分别?

最好不需要编辑每个映射,因此我不希望使用 IUserType因为这需要(我认为)到处放置

this.Map(x => x.SomePrice).CustomType<PriceType>();
this.Map(x => x.NullablePrice).CustomType<NullablePriceType>();

最佳答案

你想要的可以通过Components实现以类似于 Following code extract 的方式:

 Component(x => x.Price, m =>
{
m.Map(money => money.Amount, "Price_Amount");
m.Map(money => money.CurrencyCode, "Price_CurrencyCode");
});

组件是将规范化数据映射到可重用实体的完美方法。

关于c# - 将结构映射为一种类型(可以为空),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26779158/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com