Я пытаюсь сопоставить идентификатор объекта с AutoMapper, и я пытался выяснить это в течение двух дней.Любая помощь будет оценена.
Вот мои объекты домена:
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);
}
}