【记录】AutoMapper Project To not support ResolveUsing
2024-08-29 18:39:26
示例代码:
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
最新文章
- Node聊天程序实例06:server.js
- jQuery事件笔记
- 64位系统使用Access 数据库文件的彻底解决方法
- C语言 指针例解
- js 的闭包
- JDBC接口规范
- Eclipse - JDK内存配置- 环境配置
- Objective-C 2.0的运行时编程
- bzoj 2751 快速幂
- 【HTML】Beginner5:List
- scrapy使用爬取多个页面
- Android模拟器报";Failed To Allocate memory 8";错误的解决办法
- 在Windows Server 2008 R2 中架设 SMTP 服务器
- 分分钟带你玩转 Web Services【2】CXF
- Mac上重置mysql 5.7密码
- 2018,你与 i 春秋的故事都在这
- 极速搭建RTMP直播流服务器+webapp (vue) 简单实现直播效果
- python类型错误:&#39;NoneType&#39; object is not subscriptable
- 如何将项目连接数据库(连接mysql)
- 第三部分:Android 应用程序接口指南---第五节:计算---第一章 RenderScript