/// <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下泛型分页方法,更新方法的更多相关文章

  1. iOS系统弃用方法更新方法

    -boundingRectWithSize:options:attributes:context:用法 - (CGSize)sizeWithFont:(UIFont *)font constraine ...

  2. [读书笔记]C#学习笔记四: C#2.0泛型 可控类型 匿名方法和迭代器

    前言 C#1.0的委托特性使方法作为其他方法的参数来传递,而C#2.0 中提出的泛型特性则使类型可以被参数化,从而不必再为不同的类型提供特殊版本的实现方法.另外C#2.0还提出了可空类型,匿名方法和迭 ...

  3. Linux下tail命令的使用方法

    Linux下tail命令的使用方法: linux tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,ta ...

  4. 低功耗蓝牙BLE之连接事件、连接参数和更新方法

    转自:http://blog.csdn.net/zzfenglin/article/details/51304084 连接事件 在一个连接当中,主设备会在每个连接事件里向从设备发送数据包.一个连接事件 ...

  5. svn更新路径,解决办法详细步骤,eclipse里面的更新方法,svn废弃位置,Windows环境,svn服务器地址换了,如何更新本地工作目录

    svn更新路径,解决办法详细步骤,eclipse里面的更新方法,svn废弃位置,Windows环境,svn服务器地址换了,如何更新本地工作目录 Windows下,svn服务器IP本来是内网一台服务器上 ...

  6. Linux下Git和GitHub使用方法总结

    来源:Linux下Git和GitHub使用方法总结 1 Linux下Git和GitHub环境的搭建 第一步: 安装Git,使用命令 “sudo apt-get install git” 第二步: 到G ...

  7. LoadRunner参数更新方法和数据分配

    参数化的定义:使用指定的数据源中的值来替换脚本录制生成的语句中的参数. 对Vuser脚本进行参数化的好处: 1.减小脚本的大小 2.提供了使用不同的脚本的值执行脚本的能力 参数化涉及两个任务: 1.用 ...

  8. Ubuntu下deb包的安装方法 (zz)

    Ubuntu下deb包的安装方法 分类: Ubuntu10使用技巧 2010-10-11 23:49 42969人阅读 评论(3) 收藏 举报 ubuntudebdebianlinux deb是deb ...

  9. ubuntu下deb包的安装方法

    ubuntu下deb包的安装方法 简介 deb是debian linus的安装格式,跟red hat的rpm非常相似,最基本的安装命令是:dpkg -i file.deb dpkg 是Debian P ...

随机推荐

  1. T-SQL—理解CTEs

    在推出SQLServer2005之后,微软定义了一个新的查询架构叫做公共表表达式--CTE.CTE是一个基于简单查询的临时结果集,在一个简单的插入.更新.删除或者select语句的执行范围内使用.再本 ...

  2. Silverlight 调用自托管的wcf 报跨域异常的处理

    Sileverlight很多时候需要通过wcf和后台,程序进行交互.如果 iis was托管还好,极端的遇到自托管的程序,console,windowsservice,winform,wpf等,就会出 ...

  3. 设计模式C#实现(十二)——装饰模式

    意图 0 适用性 1 结构 2 实现 3 效果 4 参考 5 意图 动态的给一个对象添加一些额外的职责. 适用性 动态的为单个对象添加职责而不影响其他对象 处理那些可以撤销的职责(? 在某些功能不需要 ...

  4. 数据结构杂谈(二)简单有趣的地精排序Gnome sort

    很早之前便听说过地精排序的名字,今天自己看来一下,发现这是一种非常简单而且有趣的排序算法. 为什么叫地精排序? 地精排序在2000年由Dr. Hamid Sarbazi-Azad 提出的时候被称作 s ...

  5. 注意Android里TextView控件的一个小坑,用android:theme来设置样式时动态载入的layout会丢失该样式

    注意Android里TextView控件的一个小坑,用android:theme来设置样式时动态载入的layout会丢失该样式 这个坑,必须要注意呀, 比如在用ListView的时候,如果在List_ ...

  6. stm32 加入 USE_STDPERIPH_DRIVER、STM32F10X_HD的原因

    初学STM32,在RealView MDK 环境中使用STM32固件库建立工程时,初学者可能会遇到编译不通过的问题.出现如下警告或错误提示: warning: #223-D: function &qu ...

  7. 【转】 svn 错误 以及 中文翻译

    直接Ctrl+F 搜索你要找的错 # # Simplified Chinese translation for subversion package # This file is distribute ...

  8. Caffe fine-tuning 微调网络

    转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ 目前呢,caffe,theano,torch是当下比较流行的De ...

  9. C#小游戏(文字对战游戏)

    第一代,不是很完善,会在后续增加更多的功能 主: using System; using System.Collections.Generic; using System.Linq; using Sy ...

  10. win7旗舰版 中文64位 产品密钥(序列号)

    无需破解即可激活Windows 7旗舰版的"神Key". 第一枚"神Key":TFP9Y-VCY3P-VVH3T-8XXCC-MF4YK: 第二枚"神 ...