AutoMapper Project To OrderBy Skip Take 正确写法

简介:

示例代码:

using (var context = new orderEntities())
{
    return context.OrderLines.Where(ol => ol.OrderId == orderId)
                .Project().To<OrderLineDTO>().ToList();
}

这是 Jimmy Bogard 提供的一段使用.Project().To的示例代码,但如果加上.OrderBy(ol => ol.OrderId).Skip(skip).Take(take)(Linq 分页)这段代码,使用 SQL Server Profiler 跟踪生成的 SQL 语句,就会发现.Project().To DTO 映射转换并没有起到效果,还是查询的所有列,在 stackoverflow 上找到一个相关的问题,他是把 Linq 分页代码放在 Project 的后面,我试过这种写法,但是会抛出异常,因为.OrderBy(ol => ol.OrderId)放在后面,访问的 OrderId 属性类型应该是 OrderLineDTO,而不是 OrderLine。

错误写法:

using (var context = new orderEntities())
{
    return context.OrderLines.Where(ol => ol.OrderId == orderId)
                .OrderBy(ol => ol.OrderId).Skip(skip).Take(take).Project().To<OrderLineDTO>().ToList();
                //或者 .Project().To<OrderLineDTO>().OrderBy(ol => ol.OrderId).Skip(skip).Take(take).ToList();
}

测试可用的正确写法:

using (var context = new orderEntities())
{
    return context.OrderLines.Where(ol => ol.OrderId == orderId)
                .OrderBy(ol => ol.OrderId).Project().To<OrderLineDTO>().Skip(skip).Take(take).ToList();
}

本文转自田园里的蟋蟀博客园博客,原文链接:http://www.cnblogs.com/xishuai/p/automapper-project-to-orderby-skip-take.html,如需转载请自行联系原作者
相关文章
|
8天前
|
Java
开发指南004-@Query参数写法
JPA的Query注解和函数参数的绑定有多种写法
|
1月前
|
SQL Java 关系型数据库
MyBatis的动态SQL之OGNL(Object-Graph Navigation Language)表达式以及各种标签的用法
MyBatis的动态SQL之OGNL(Object-Graph Navigation Language)表达式以及各种标签的用法
18 0
|
10月前
|
JavaScript 索引
vue 数组处理= 循环--查找过滤--添加删除--去重[.every()/.some()/.find()/.filter()/.forEach()/.map()]
vue 数组处理= 循环--查找过滤--添加删除--去重[.every()/.some()/.find()/.filter()/.forEach()/.map()]
190 0
vue 数组处理= 循环--查找过滤--添加删除--去重[.every()/.some()/.find()/.filter()/.forEach()/.map()]
|
11月前
|
SQL Java 数据库连接
MyBatis动态SQL中if、where、trim、choose、when、otherwise、foreach标签及sql标签范例
MyBatis动态SQL中if、where、trim、choose、when、otherwise、foreach标签及sql标签范例
99 0
|
SQL XML Java
Mybatis中$ {} 和 # {}的区别,动态SQL之if、where、set、trim、foreach标签的使用
Mybatis中$ {} 和 # {}的区别,动态SQL之if、where、set、trim、foreach标签的使用
150 0
Mybatis中$ {} 和 # {}的区别,动态SQL之if、where、set、trim、foreach标签的使用
|
SQL Java 数据库连接
Data Access 之 MyBatis Plus(二)- Wrapper 条件构造器
Data Access 之 MyBatis Plus(二)- Wrapper 条件构造器
Data Access 之 MyBatis Plus(二)- Wrapper 条件构造器
【错误记录】Groovy 注入方法报错 ( Cannot add new method [hello] for arguments [[]]. It already exists )
【错误记录】Groovy 注入方法报错 ( Cannot add new method [hello] for arguments [[]]. It already exists )
126 0
【错误记录】Groovy 注入方法报错 ( Cannot add new method [hello] for arguments [[]]. It already exists )
|
机器学习/深度学习 .NET 索引
LInq之Take Skip TakeWhile SkipWhile Reverse Union Concat 用法
废话不多说,直接上代码,代码有注释!自行运行测试! class Program { static void Main(string[] args) { string[] names = { "郭靖", "李莫愁", "欧阳晓晓", "黄蓉", "黄药师", "郭靖", "黄蓉" }; //Take()方法:用于从一个序列的开头返回指定数量的元素。
1017 0