Мы хотим, чтобы в общем случае отображать из одной базы данных context.tableType в другую
например UatDb.Branch - LiveDb.Branch
Таблицы идентичны, поэтому MapFrom не требуется.
Следующего общего определения соответствия достаточно
Mapper.CreateMap<TFromContextTableType,TToContextTableType>();
Однако !!!
Нам нужно обернуть исходный context.tableType в следующий класс-оболочку:
public class SWrapper<TFrom> where TFrom : class
{
public SWrapper(TFrom model)
{
Model = model;
}
public TFrom Model { get; private set; }
}
Теперь, чтобы выполнить отображение, мы должны отобразить следующее:
Mapper.CreateMap<SWrapper<FromBranchType>, ToBranchType>().ConstructUsing(x => new Live.Branch()))
.ForMember(d => d.BranchID, o => o.MapFrom(x => x.Model.BranchID))
.ForMember(d => d.BranchName, o => o.MapFrom(x => x.Model.BranchName))
.ForMember(d => d.BranchCountry, o => o.MapFrom(x => x.Model.BranchCountry))
Это означает, что мы не можем в общем отображать и должны явно объявлять ForMember для каждого отображения. Я не могу найти какое-либо решение с помощью резольверов или преобразователей типов.
Я подумал о том, чтобы, возможно, обернуть цель в SWrapper, а затем разрешить возвращенный объект Wrapped для возврата внутреннего продукта, но не уверен, как это сделать.
Все идеи приветствуются ....