我在使用AutoMapper从数据传输对象映射到数据库实体模型时遇到了一些麻烦。该实体有一些属性是自定义数组类型,派生自IEnumerable。这些属性没有setter,但有一个名为@ARTICLE{Abazajian2003,
year = 2003,
volume = 203,
volume = 203,
@ARTICLE{Alexander2003,
year = 2003,
@ARTICLE{Anderson2003,
year = 2003,
@INPROCEEDINGS{Antonucci2003,
year = 2003,
@ARTICLE{Baes2003,
year = 2003,
year = 2003,
的方法可用。我似乎无法正确配置我的地图以使用它。 AutoMapper是否支持这种事情?如果有人能指出我正确的方向,我会很感激。
以下是我正在使用的关键类的简化版本。 (从实体到DTO,映射工作得很好,但我也需要它反向工作。)
SetFromString()
我的映射配置文件仍然很香草,因为我无法绕过正确的// The database entity
public class ContactEntity
{
public CustomArray<String> CustomerNumbers { get; }
}
// The data transfer object
public class ContactDto
{
public List<String> CustomerNumbers { get; set; }
}
// CustomArray definition
public abstract class CustomArray<DataType> : IEnumerable<DataType>, IDisposable
{
protected CustomArray();
public abstract void SetFromString(string Value);
}
语法。
ForMember
再次感谢您提供的任何帮助!
答案 0 :(得分:3)
您可以使用UseDestinationValue
或Ignore
作为目标实体CustomerNumbers
成员,并在AfterMap
中执行实际映射:
cfg.CreateMap<ContactDto, ContactEntity>()
.ForMember(dest => dest.CustomerNumbers, opt => opt.Ignore())
.AfterMap((src, dest) => dest.CustomerNumbers.SetFromString(string.Join(",", src.CustomerNumbers)));