0
我想用AutoMapper將一個id映射到對象上,我一直試圖弄清楚這兩天。任何幫助,將不勝感激。映射一個可爲空的實體
這裏是我的域對象:
public class Entity
{
public virtual Guid Id { get; protected set; }
}
public class Customer : Entity
{
public virtual User SalesPerson { get; set; }
}
public class User : Entity
{
public virtual string Email { get; set; }
}
這裏是我使用的編輯模式。銷售人員是具有「無」選項(value=""
)的用戶的下拉列表,因爲客戶可能沒有銷售人員。
public class CustomerEditModel
{
[DisplayName("Sales Person")]
public Guid? SalesPerson { get; set; }
}
而這裏是我卡住的地方。這是到目前爲止,我已經嘗試到編輯模式映射回域模型的映射:
cfg.CreateMap<CustomerEditModel, Customer>()
.ForMember(d => d.SalesPerson, o => o.ResolveUsing<EntityResolver<User>>().FromMember(s => s.SalesPerson));
cfg.CreateMap<CustomerEditModel, Customer>()
.ForMember(d => d.SalesPerson, o => o.MapFrom(s => s.SalesPerson.HasValue ? s.SalesPerson.Value : null);
cfg.CreateMap<CustomerEditModel, Customer>()
.ForMember(d => d.SalesPerson, o => o.MapFrom(s => s.SalesPerson != null ? s.SalesPerson : null));
public class EntityResolver<T> : ValueResolver<Guid, T>
where T : Entity
{
protected override T ResolveCore(Guid source)
{
return session.Get<T>(source, LockMode.None);
}
}
你也可以使用一個類型轉換器,以及: Mapper.CreateMap .ConvertUsing >(); EntityConverter是一個ITypeConverter,看起來幾乎和上面一樣。 –