0
的錢接近其從這裏:
http://martinfowler.com/eaaCatalog/embeddedValue.html
http://martinfowler.com/eaaCatalog/money.html
我有一個配置對於Autmapper:
public class MoneyProfile : Profile
{
protected override void Configure()
{
Mapper.CreateMap<decimal, Money>().ConvertUsing<MoneyToDecimalTypeConverter>();
Mapper.CreateMap<Money, decimal>().ConvertUsing<DecimalToMoneyTypeConverter>();
}
public class DecimalToMoneyTypeConverter : ITypeConverter<Money, decimal>
{
public decimal Convert(ResolutionContext context)
{
return ((Money)context.SourceValue).Amount;
}
}
public class MoneyToDecimalTypeConverter : ITypeConverter<decimal, Money>
{
public Money Convert(ResolutionContext context)
{
return new Money((decimal)context.SourceValue);
}
}
}
public class PersonProfile : Profile
{
protected override void Configure()
{
var mapDomainToDb = Mapper.CreateMap<Person, PersonDb>();
mapDomainToDb.ForMember(db => db.SalaryAmount, options => options.MapFrom(domain => domain.Salary.Amount));
mapDomainToDb.ForMember(db => db.SalaryCurrencyCode, options => options.MapFrom(domain => domain.Salary.CurrencyCode));
var mapDbToDomain = Mapper.CreateMap<PersonDb, Person>();
// ?????
}
}
我不知道如何將Db映射到域,我如何從小數和字符串創建Money對象。任何人都可以幫助我,我第一次使用automapper。
嗨西蒙感謝您的回答。 (x => x.Salary.Amount,opt => opt.MapFrom(y => y.SalaryAmount)) 我得到這個錯誤: Expression'x => Convert(x.Salary.Amount )'必須解析爲頂級成員,而不是任何子對象的屬性。 改爲在子類型或AfterMap選項上使用自定義解析器。 – ramo2712
當然哦。好吧,我。你可以使用'AfterMap' ..我會更新我的答案。 –
已更新。有可能是一個更好的方法來做到這一點,但我現在無法檢查:/ –