Чтобы получить плоскую модель, вы можете проверить в этом примере .Но, по-видимому, по умолчанию в качестве префикса в цели используется соглашение о том, что имя свойства подкласса должно быть
Источник
public class SourceObject
{
public SourceSubObject SomeClass { get; set; }
}
public SourceSubObject
{
public int Age { get; set; }
}
Target
public class Target
{
public int SomeClassAge { get; set; }
}
Во-вторых, один из вариантов - позволить настройкам по умолчанию скопировать те свойства, которые он может скопировать, и сделать остальное вручную
var target = ObjectMapperManager.DefaultInstance.GetMapper<Source, Target>().Map(source);
target.CompanyId = target.Company.CompanyId;
Или, если вам необходимо повторно использовать сопоставлениеСоздание пользовательского сопоставления
Настраиваемое сопоставление
private Target Converter(Source source)
{
var target = new Target();
target.CompanyId = source.Company.CompanyId;
return target;
}
Использование
var mapper = new DefaultMapConfig().ConvertUsing<Source, Target>(Converter);
var target = ObjectMapperManager.DefaultInstance.GetMapper<Source, Target>(mapper).Map(source);
Обновление
Что входит в отображение Role & RoleModel.Похоже, что в этом случае вам нужно включить глубокое копирование, и в зависимости от определений классов вы можете либо скопировать его напрямую, либо выполнить какое-либо пользовательское сопоставление.
ObjectMapperManager.DefaultInstance.GetMapper<Source, Target>(new DefaultMapConfig().DeepMap<ClassToDeepMap>().DeepMap<ClassToDeepMap>()).Map(source, target);