EF实体框架数据操作接口(转)
//----------------------------------------------------------------
// Copyright (C) 2013 河南禄恒软件科技有限公司
//
// 功能描述:实体框架数据仓储的操作接口,包含增删改查接口
//
//----------------------------------------------------------------
using System;
using System.Linq;
using System.Linq.Expressions;
namespace Qmvc.DataAccess.EntityRepository
{
/// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
public interface IRepository<T> where T : class, new()
{
/// <summary>
/// 返回一个 System.Linq.IQueryable
/// </summary>
/// <returns>一个 System.Linq.IQueryable,包含满足由 predicate 指定的条件的元素</returns>
IQueryable<T> All();
/// <summary>
/// 返回一个 System.Linq.IQueryable,包含满足由 predicate 指定的条件的元素
/// </summary>
/// <param name="predicate">用于测试每个元素是否满足条件的函数</param>
/// <returns>一个 System.Linq.IQueryable,包含满足由 predicate 指定的条件的元素</returns>
IQueryable<T> Where(Expression<Func<T, bool>> predicate);
/// <summary>
/// 返回一个 System.Linq.IQueryable,包含满足由 predicate 和 分页参数
/// 指定的条件的元素,并根据键对其元素排序
/// </summary>
/// <param name="predicate">用于测试每个元素是否满足条件的函数</param>
/// <param name="pageSize">页大小</param>
/// <param name="pageIndex">页码</param>
/// <param name="orderingSelector">用于从元素中提取键的函数</param>
/// <param name="orderBy">排序类型</param>
/// <param name="recCount">总数量</param>
/// <returns>一个 System.Linq.IQueryable,包含满足由 predicate 和 分页参数
/// 指定的条件的元素,并根据键对其元素排序</returns>
IQueryable<T> Where<TKey>(Expression<Func<T, bool>> predicate, int pageSize, int pageIndex,
Expression<Func<T, TKey>> orderingSelector, OrderingOrders orderBy, out int recCount);
/// <summary>
/// 返回一个 System.Linq.IQueryable,包含满足由 predicate 指定的条件的元素,并根据键对其元素排序
/// </summary>
/// <param name="predicate">用于测试每个元素是否满足条件的函数</param>
/// <param name="orderingSelector">用于从元素中提取键的函数</param>
/// <param name="orderBy">排序</param>
/// <returns>一个 System.Linq.IQueryable,包含满足由 predicate 指定的条件的元素,并根据键对其元素排序</returns>
IQueryable<T> Where<TKey>(Expression<Func<T,
bool>> predicate, Expression<Func<T, TKey>>
orderingSelector,
OrderingOrders orderBy);
/// <summary>
/// 返回一个 System.Linq.IQueryable,包含满足由 predicate 指定的条件的元素,并根据键对其元素排序
/// </summary>
/// <param name="sql"></param>
/// <param name="parameters"></param>
/// <typeparam name="TKey"></typeparam>
/// <returns>一个 System.Linq.IQueryable,包含满足由 predicate 指定的条件的元素,并根据键对其元素排序</returns>
IQueryable<T> Where<TKey>(string sql, params object[] parameters);
/// <summary>
/// 返回序列的唯一元素;如果该序列并非恰好包含一个元素,则会引发异常。
/// </summary>
/// <param name="predicate">用于测试每个元素是否满足条件的函数</param>
/// <returns>单个元素</returns>
T Single(Expression<Func<T, bool>> predicate);
/// <summary>
/// 返回序列的唯一元素;如果该序列并非恰好包含一个元素,则会引发异常。
/// </summary>
/// <param name="predicate">用于测试每个元素是否满足条件的函数</param>
/// <param name="orderingSelector">用于从元素中提取键的函数</param>
/// <param name="orderBy">排序</param>
/// <returns>单个元素</returns>
T Single<TKey>(Expression<Func<T, bool>> predicate,
Expression<Func<T, TKey>> orderingSelector,
OrderingOrders orderBy);
/// <summary>
/// 返回序列中满足指定条件的唯一元素;如果序列中不包含任何元素,则返回默认值
/// </summary>
/// <param name="predicate">用于测试每个元素是否满足条件的函数</param>
/// <returns>唯一元素</returns>
T FirstOrDefault(Expression<Func<T, bool>> predicate);
/// <summary>
/// 返回序列中满足指定条件的唯一元素;如果序列中不包含任何元素,则返回默认值
/// </summary>
/// <param name="predicate">用于测试每个元素是否满足条件的函数</param>
/// <param name="orderingSelector">用于从元素中提取键的函数</param>
/// <param name="orderBy">排序</param>
/// <returns>唯一元素</returns>
T FirstOrDefault<TKey>(Expression<Func<T, bool>>
predicate, Expression<Func<T, TKey>> orderingSelector,
OrderingOrders orderBy);
/// <summary>
/// 返回指定序列中满足条件的元素数量
/// </summary>
/// <param name="predicate">用于测试每个元素是否满足条件的函数</param>
/// <returns>元素数量</returns>
int Count(Expression<Func<T, bool>> predicate);
/// <summary>
/// 将对象添加到当前实体集中的对象上下文
/// </summary>
/// <param name="entity">实体对象</param>
/// <returns>操作是否成功</returns>
bool Add(T entity);
/// <summary>
/// 将对象标记为待删除
/// </summary>
/// <param name="entity">实体对象</param>
/// <returns>操作是否成功</returns>
bool Delete(T entity);
/// <summary>
/// 将满足 predicate 指定的条件的元素对象标记为待删除
/// </summary>
/// <param name="predicate">用于测试每个元素是否满足条件的函数</param>
/// <returns>操作是否成功</returns>
bool Delete(Expression<Func<T, bool>> predicate);
/// <summary>
/// 将满足 predicate 指定的条件的元素对象更新为满足 updatePredicate 条件的属性;如果 IsOwnContex == true,将对象保存到数据源
/// </summary>
/// <param name="predicate">用于测试每个元素是否满足条件的函数</param>
/// <param name="updatePredicate">用于构建对象的函数</param>
/// <returns>操作是否成功</returns>
bool Update(Expression<Func<T, bool>> predicate, Expression<Func<T, T>> updatePredicate);
}
}
转自:http://www.cnblogs.com/henanluheng/p/3785311.html
EF实体框架数据操作接口(转)的更多相关文章
- BIM工程信息管理系统-EF实体框架数据操作基类
EF实体框架数据操作基类主要是规范增.改.查.分页.Lambda表达式条件处理,以及异步操作等特性,这样能够尽可能的符合基类这个特殊类的定义,实现功能接口的最大化重用和统一. 1.程序代码 /// & ...
- EF实体框架数据操作基类(转)
//----------------------------------------------------------------// Copyright (C) 2013 河南禄恒软件科技有限公司 ...
- EF实体框架处理实体之间关联关系与EF延迟机制(下)
在数据库中,表与表之间可能存在多种联系,比如,一对多,多对多的关系.当我们使用逻辑外键在数据库建立两张表之间的关系的时候,我们使用EF实体框架 必然也会将这种关系映射到我们的实体关系中来.所以,在我们 ...
- 【MVC 1】MVC+EF实体框架—原理解析
导读:在之前,我们学过了三层框架,即:UI.BLL.DAL.我们将页面显示.逻辑处理和数据访问进行分层,避免了一层.两层的混乱.而后,我们又在经典三层的基础上,应用设计模式:外观.抽象工厂+反射,使得 ...
- 【EF 1】EF实体框架 原理+实例
一.知识回顾 到目前为止,自己学到的链接数据库操作已经经历了几个阶段,分别是:学生信息管理和(第一次)机房收费时的直接连接数据库操作表格,然后是机房个人重构中应用的操作实体,在其中还利用了一个很重要的 ...
- EF实体框架之CodeFirst一
对于SQL Server.MySql.Oracle等这些传统的数据库,基本都是关系型数据库,都是体现实体与实体之间的联系,在以前开发时,可能先根据需求设计数据库,然后在写Model和业务逻辑,对于Mo ...
- EF实体框架之CodeFirst四
在EF实体框架之CodeFirst二中也提到数据库里面一般包括表.列.约束.主外键.级联操作.实体关系(E-R图).存储过程.视图.锁.事务.数据库结构更新等.前面几篇博客把表.存储过程.视图这些算是 ...
- C#.Net EF实体框架入门视频教程
当前位置: 主页 > 编程开发 > C_VC视频教程 > C#.Net EF实体框架入门视频教程 > kingstone金士顿手机内存卡16G仅65元 1.EF实体框架之增加查 ...
- Config File Settings Of EF——实体框架的配置文件设置
我亦MSDN 原文地址 http://msdn.microsoft.com/en-us/data/jj556606 Entity Framework allows a number of settin ...
随机推荐
- 采用dom4j和反射模拟Spring框架的依赖注入功能
Spring的依赖注入是指将对象的创建权交给Spring框架,将对象所依赖的属性注入进来的行为.在学习了dom4j后,其实也可以利用dom4j和反射做一个小Demo模拟Spring框架的这种功能.下面 ...
- asp 使用TreeView控件
这段代码为了使用 TreeNodeCheckChanged 事件,会有回刷新的效果: 不喜欢的可查看改进版,利用js控制选择操作,无界面刷新, “http://www.cnblogs.com/GoCi ...
- Apache 403 error, (13)Permission denied: access to / denied问题
Apache 配置Alias 后,无法访问 CentOS系统 检查了一圈httpd.conf和目录权限,均没有发现问题. 最后,看了这篇文章,发现是因为系统启动了SELINUX导致的. http:// ...
- [ubuntu]用ubuntu开发的日子----win7 ubuntu双系统
小子终于忍不了win7某些蛋疼的设定,看群里好多大牛推荐mac,但资金紧张,只好推而求其次使用ubuntu,但是由于公司工作环境是windows,所以还必须保留windows系统,一次决定双系统. 下 ...
- psql
1.sudo passwd postgres 2.sudo -u postgres createuser -P django_login 3.su postgres 4.psql 5.CREATE D ...
- 【WebGoat习题解析】AJAX Security->Insecure Client Storage
绕过前端验证可以通过两种办法:一是利用开发者工具进行debug:二是利用burpsuite直接抓取.本题解决思路如下: STAGE 1: For this exercise, your mission ...
- psp进度(11月25号-31号)
本周psp进度 11月25号 内容 开始时间 结束时间 打断时间 净时间 处理数据集 9:27 11:34 12m 115m 11月27号 内容 开始时间 结束时间 打断时间 净时间 scr ...
- PE文件学习系列二 DOS头分析
合肥程序员群:49313181. 合肥实名程序员群 :128131462 (不愿透露姓名和信息者勿加入)Q Q:408365330 E-Mail:egojit@qq.com PE文件结 ...
- 解决Gradle生成Eclipse支持后,发布到Tomcat丢失依赖jar包的问题
最近一个项目中,使用号称下一代构建工具的Gradle构建项目. 使用中发现一个问题,Gradle从中央库下载的jar文件在系统的其它目录,使用gradle eclipse添加Eclipse支持时,ja ...
- 网页中多媒体对像标记<OBJECT>和<EMBED>
在网页中常用object和embed标记插入的多媒体对象,比如FLASH,视频等. 用一个快播例子说明下这两个标记的使用和区别: <object classid="clsid:F3D0 ...