【记录】AutoMapper Project To not support ResolveUsing
2014-11-25 17:32
375 查看
示例代码:
按照上面代码编写会抛出异常,使用 ORM 获取转换的时候(.Project().To),是不支持 ResolveUsing 的,Jimmy Bogard(AutoMapper 作者)应该扩展下 Queryable Extensions,如果不使用 .Project().To,单纯的映射转换是支持 ResolveUsing 的,使用 ResolveUsing 无非就是方便业务逻辑代码编写,我们也可以使用 MapFrom 进行实现:
参考资料:
Queryable Extensions
Automapper Project.To Null reference exception
Automapper error: Expressions mapping from methods not supported yet
Projekt().To in AutoMapper.QueryableExtensions fails when inner property is null
public List<OrderLineDTO> GetLinesForOrder(int orderId) { Mapper.CreateMap<OrderLine, OrderLineDTO>() .ForMember(dto => dto.Item, conf => conf.MapFrom(ol => ol.Item.Name) .ForMember(dto => dto.Name, opt => opt.ResolveUsing<NameCustomResolver>()); using (var context = new orderEntities()) { return context.OrderLines.Where(ol => ol.OrderId == orderId) .Project().To<OrderLineDTO>().ToList(); } } public class NameCustomResolver : ValueResolver<OrderLine, string> { protected override string ResolveCore(OrderLine source) { //可以加一些逻辑 return source.Name; } }
按照上面代码编写会抛出异常,使用 ORM 获取转换的时候(.Project().To),是不支持 ResolveUsing 的,Jimmy Bogard(AutoMapper 作者)应该扩展下 Queryable Extensions,如果不使用 .Project().To,单纯的映射转换是支持 ResolveUsing 的,使用 ResolveUsing 无非就是方便业务逻辑代码编写,我们也可以使用 MapFrom 进行实现:
public List<OrderLineDTO> GetLinesForOrder(int orderId) { Mapper.CreateMap<OrderLine, OrderLineDTO>() .ForMember(dto => dto.Item, conf => conf.MapFrom(ol => ol.Item.Name) .ForMember(dto => dto.Name, opt => opt.MapFrom(ol => NameCustomResolver(ol))); using (var context = new orderEntities()) { return context.OrderLines.Where(ol => ol.OrderId == orderId) .Project().To<OrderLineDTO>().ToList(); } } public static string NameCustomResolver(OrderLine source) { //可以加一些逻辑 return source.Name; }
参考资料:
Queryable Extensions
Automapper Project.To Null reference exception
Automapper error: Expressions mapping from methods not supported yet
Projekt().To in AutoMapper.QueryableExtensions fails when inner property is null
相关文章推荐
- 【记录】AutoMapper Project To OrderBy Skip Take 正确写法
- Could not resolve dependencies for project, Failed to read artifact descriptor for
- 解决:Failed to execute goal on project aopcore: Could not resolve dependencies for project com.cmos:
- Flume编译报错: Failed to execute goal on project flume-ng-morphline-solr-sink: Could not resolve depende
- Failed to execute goal on project taotao-sso: Could not resolve dependencies for project com.taotao:
- Failed to execute goal on project mycollab-config: Could not resolve dependencies for project com.es
- Maven error: Failed to execute goal on project : Could not resolve dependencies for project 解决办法
- maven build出现“Failed to execute goal on project taotao_manage_web: Could not resolve dependencies f”
- Android 异常Error:Unable to resolve dependency ,Could not resolve project
- Failed to execute goal on project ecz-wx: Could not resolve dependencies for project
- [ERROR] Failed to execute goal on project jdong: Could not resolve dependencies for project jdong:ja
- Failed to execute goal on project tanliu: Could not resolve dependencies for project com.yy.tanliu:t
- Maven多模块项目单独编译子模块项目时报错:Failed to execute goal on project/Could not resolve dependencies for project
- Error:Unable to resolve dependency for ':module1@debug/compileClasspath': Could not resolve project
- Failed to execute goal on project finance-weibo: Could not resolve dependencies for project
- 解决导入的Android项目中出现的The project was not built since和 Unable to resolve target 'android-19'错误
- Error:Failed to resolve: com.android.support或者Install Repository and sync project问题
- Unable to resolve dependency for... Could not resolve project :library
- 解决Failed to execute goal on project ***-***: Could not resolve dependencies for project com 问题
- Error:Unable to resolve dependency for ':app@stage/compileClasspath': Could not resolve project :mvp