EF下泛型分页方法,更新方法
/// <summary>
/// 获取分页的分页集合
/// </summary>
/// <typeparam name="S">实体类型</typeparam>
/// <param name="filter">过滤,条件</param>
/// <param name="pageIndex">当前页</param>
/// <param name="pageSize">每页记录数</param>
/// <param name="orderByExpression">排序</param>
/// <param name="ascending">是否排序</param>
/// <returns>返回分页的分页集合</returns>
public PagedResult<T> GetFilteredPageResult<S, T>(Expression<Func<T, bool>> filter, int pageIndex, int pageSize, Expression<Func<T, S>> orderByExpression, bool ascending) where T : class
{
int count = this.DataContext.Set<T>().Where(filter).Count();
return new PagedResult<T>(
pageIndex,
pageSize,
count,
this.GetFilteredElements<S,T>(filter, pageIndex, pageSize, orderByExpression, ascending));
}
/// <summary>
/// 获取有条件的分页对象集合
/// </summary>
/// <typeparam name="S">实体类型</typeparam>
/// <param name="filter">条件过滤</param>
/// <param name="pageIndex">当前页</param>
/// <param name="pageSize">每页记录数</param>
/// <param name="orderByExpression">排序,排序Func表达式</param>
/// <param name="ascending">是否排序</param>
/// <returns>返回有条件的分页对象集合</returns>
public IEnumerable<T> GetFilteredElements<S, T>(Expression<Func<T, bool>> filter, int pageIndex, int pageSize, Expression<Func<T, S>> orderByExpression, bool ascending) where T : class
{
if (filter == (Expression<Func<T, bool>>)null)
{
throw new ArgumentNullException("filter", Messages.exception_FilterCannotBeNull);
} if (pageIndex < )
{
throw new ArgumentException(Messages.exception_InvalidPageIndex);
} if (pageSize <= )
{
throw new ArgumentException(Messages.exception_InvalidPageSize);
} if (orderByExpression == (Expression<Func<T, S>>)null)
{
throw new ArgumentNullException("orderByExpression", Messages.exception_OrderByExpressionCannotBeNull);
} return ascending
?
this.DataContext.Set<T>()
.Where(filter)
.OrderBy(orderByExpression)
.Skip((pageIndex - ) * pageSize)
.Take(pageSize)
.ToList()
:
this.DataContext.Set<T>()
.Where(filter)
.OrderByDescending(orderByExpression)
.Skip((pageIndex - ) * pageSize)
.Take(pageSize)
.ToList();
} /// <summary>
/// 获取记录数
/// </summary>
/// <param name="filter">条件filter</param>
/// <returns>返回记录数</returns>
public int GetRecordCount<T>(Expression<Func<T, bool>> filter) where T : class
{
return this.DataContext.Set<T>().Where(filter).Count();
}
public class PagedResult<TEntity>
{
/// <summary>
/// 数据列表
/// </summary>
public IEnumerable<TEntity> List { get; private set; } /// <summary>
/// 每页记录数
/// </summary>
public int PageSize { get; private set; } /// <summary>
/// 页索引
/// </summary>
public int PageIndex { get; private set; } /// <summary>
/// 总记录数
/// </summary>
public int RecordCount { get; private set; } /// <summary>
/// 总页数
/// </summary>
public int TotalPages
{
get
{
int pages = ;
if (RecordCount > && PageSize > )
{ int temp = RecordCount % PageSize;
pages = RecordCount / PageSize;
if (temp > )
{
return pages + ;
}
} return pages;
}
} /// <summary>
/// Constructor
/// </summary>
/// <param name="pageIndex">页索引</param>
/// <param name="pageSize">每页记录数</param>
/// <param name="recordCount">总记录数</param>
/// <param name="list">数据列表</param>
public PagedResult(int pageIndex, int pageSize, int recordCount, IEnumerable<TEntity> list)
{
this.List = list;
this.PageIndex = pageIndex;
this.PageSize = pageSize;
this.RecordCount = recordCount;
}
}
/// <summary>
/// 通过条件批量更新实体的部分值【异步更新】
/// </summary>
/// <param name="filterExpression">更新条件</param>
/// <param name="updateExpression">更新值</param>
public virtual void UpdateAsync<T>(Expression<Func<T, bool>> filterExpression, Expression<Func<T, T>> updateExpression) where T : class
{
DataContext.Set<T>().Where(filterExpression).UpdateAsync(updateExpression);
}
EF迁移:
PM> Enable-Migrations -EnableAutomaticMigrations
PM> Add-Migration InitialCreate
PM> Update-Database -Verbose
EF下泛型分页方法,更新方法的更多相关文章
- iOS系统弃用方法更新方法
-boundingRectWithSize:options:attributes:context:用法 - (CGSize)sizeWithFont:(UIFont *)font constraine ...
- [读书笔记]C#学习笔记四: C#2.0泛型 可控类型 匿名方法和迭代器
前言 C#1.0的委托特性使方法作为其他方法的参数来传递,而C#2.0 中提出的泛型特性则使类型可以被参数化,从而不必再为不同的类型提供特殊版本的实现方法.另外C#2.0还提出了可空类型,匿名方法和迭 ...
- Linux下tail命令的使用方法
Linux下tail命令的使用方法: linux tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,ta ...
- 低功耗蓝牙BLE之连接事件、连接参数和更新方法
转自:http://blog.csdn.net/zzfenglin/article/details/51304084 连接事件 在一个连接当中,主设备会在每个连接事件里向从设备发送数据包.一个连接事件 ...
- svn更新路径,解决办法详细步骤,eclipse里面的更新方法,svn废弃位置,Windows环境,svn服务器地址换了,如何更新本地工作目录
svn更新路径,解决办法详细步骤,eclipse里面的更新方法,svn废弃位置,Windows环境,svn服务器地址换了,如何更新本地工作目录 Windows下,svn服务器IP本来是内网一台服务器上 ...
- Linux下Git和GitHub使用方法总结
来源:Linux下Git和GitHub使用方法总结 1 Linux下Git和GitHub环境的搭建 第一步: 安装Git,使用命令 “sudo apt-get install git” 第二步: 到G ...
- LoadRunner参数更新方法和数据分配
参数化的定义:使用指定的数据源中的值来替换脚本录制生成的语句中的参数. 对Vuser脚本进行参数化的好处: 1.减小脚本的大小 2.提供了使用不同的脚本的值执行脚本的能力 参数化涉及两个任务: 1.用 ...
- Ubuntu下deb包的安装方法 (zz)
Ubuntu下deb包的安装方法 分类: Ubuntu10使用技巧 2010-10-11 23:49 42969人阅读 评论(3) 收藏 举报 ubuntudebdebianlinux deb是deb ...
- ubuntu下deb包的安装方法
ubuntu下deb包的安装方法 简介 deb是debian linus的安装格式,跟red hat的rpm非常相似,最基本的安装命令是:dpkg -i file.deb dpkg 是Debian P ...
随机推荐
- GridView 和DataGrid区别
转自:http://blog.csdn.net/51357/article/details/1480599 近期在维护一个vs2008开发的项目(该项目是从Vs2013拷贝升级过来的),发现不同时期按 ...
- Tomcat源码解读:ClassLoader的设计
Tomcat是一个经典的web server,学习tomcat的源码对于我们是有很大的帮助的.前一段时间了解了tomcat的工作的大致流程,对我的新工作有了很大的帮助.刚学习了ClassLoader( ...
- C++杂谈(二)初识vector容器与迭代器
教科书中失踪的vector 很奇怪的一件事情,在当时学习C++的时候,老师并没有讲授容器的内容,当时参考的谭浩强老师的红皮C++也没有这个内容,不知为何.后来再学C++,发现容器是一个很重要的概念,在 ...
- WIN 程序员的 Linux 互斥类
作者:黄山松,发表于cnblogs:http://www.cnblogs.com/tomview/ 对于一个 win 的程序员,要把在 win 下的程序移植到 linux 下,需要把一些平台相关的功能 ...
- 通过SecureCRT访问亚马逊Amazon EC2主机
亚马逊推出了免费的云主机服务器 Amazon EC2,它是通过安全密钥来访问主机的. 问题是下载的密钥在SecureCRT 上无法直接使用,需要转换. 下面的方法可以在自己的linux主机上生成sec ...
- STM32重映射(PinRemap)的使用,注意!
STM32重映射,内容和细节稍后补充,这里只说几个注意点,花了我一晚上的时间调试终于找到问题所在了... 芯片: STM32f107vct6 晶振: 25M 通过分频器与锁相环,使系统时钟为72M 背 ...
- jquery back to top 页面底部的返回顶部按钮
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- [转]jqGrid 属性、事件全集
本文转自:http://blog.csdn.net/rosanu_blog/article/details/8334070 以下是jqGrid 最常用的属性和事件,经过一段时间的整理,终于弄的差不多了 ...
- 周五了啦啦啦啦-LAMP+PHP‘s OOP
hi 周五咯~~ 1.LAMP配置完结篇 五.LAMP配置环境优化 5.4 虚拟主机工作原理 apache的虚拟主机.virtual-host 用不同的域名访问不同的目录——手动模拟dns 修改hos ...
- 失眠害死人-jQuery&AJAX
hi 又是两天没有做事情,后悔什么的只能带来更多的后悔吧,好好做事,忘了两天前自己作出来的失眠 1.jQuery -----jQuery与AJAX-----(PS:ajax是什么请自行百度,或者看我之 ...