自动映射错误:该类型没有默认构造函数
本文关键字:默认 构造函数 类型 映射 错误 | 更新日期: 2023-09-27 18:35: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]()
博加德,你摇滚!最新版本的自动映射器现在支持投影转换:
http://lostechies.com/jimmybogard/2014/12/23/automapper-3-3-feature-projection-conversions/
对于任何偶然发现这一点的人,从自动映射程序 3.3 版开始,您可以像这样声明投影转换:
Mapper.CreateMap<CameraDisplayMapPto, CameraDisplayMap>()
----> .ConstructProjectionUsing(x => new CameraDisplayMap(x.Camera, x.Display));