【发布时间】:2015-02-25 16:11:30
【问题描述】:
当我尝试将持久性对象映射到没有默认构造函数的域模型时遇到错误。
public class SetupGroup {
public List<CameraDisplayMap> Mappings { get; set; }
}
public class CameraDisplayMap {
public Camera Camera { get; private set; }
public Display Display { get; private set; }
public CameraDisplayMap(Camera camera, Display display)
...
}
存储库
public IEnumerable<CameraDisplayMap> GetSetupGroupMappings(int setupGroupId) {
return ((IQueryable<SetupGroupPto> GetAll())
.Where(x => x.Id == setupGroupId)
.Select(x => x.Mappings) // returns CameraDisplayMapPto from SetupGroupPto
.Project()
.To<CameraDisplayMap>();
}
我已经尝试使用映射配置进行注册...
Mapper.CreateMap<CameraDisplayMapPto, CameraDisplayMap>()
.ConstructUsing(x => new CameraDisplayMap(x.Camera, x.Display));
...同时使用 .ConstructUsing() 和 .ConvertUsing(),但它接缝这不适用于自动映射器投影。
堆栈:
at System.Linq.Expressions.Expression.New(Type type) <---
at [..].ProjectionExpression`1.BuildExpression[TDest]()
【问题讨论】:
-
你试过这样的事情吗? automapper.codeplex.com/… 创建实现
ITypeConverter<>的类,然后在 convert 方法中,构造你的对象然后返回它。
标签: c# linq mapping expression automapper