//----------------------------------------------------------------
// 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实体框架数据操作接口(转)的更多相关文章

  1. BIM工程信息管理系统-EF实体框架数据操作基类

    EF实体框架数据操作基类主要是规范增.改.查.分页.Lambda表达式条件处理,以及异步操作等特性,这样能够尽可能的符合基类这个特殊类的定义,实现功能接口的最大化重用和统一. 1.程序代码 /// & ...

  2. EF实体框架数据操作基类(转)

    //----------------------------------------------------------------// Copyright (C) 2013 河南禄恒软件科技有限公司 ...

  3. EF实体框架处理实体之间关联关系与EF延迟机制(下)

    在数据库中,表与表之间可能存在多种联系,比如,一对多,多对多的关系.当我们使用逻辑外键在数据库建立两张表之间的关系的时候,我们使用EF实体框架 必然也会将这种关系映射到我们的实体关系中来.所以,在我们 ...

  4. 【MVC 1】MVC+EF实体框架—原理解析

    导读:在之前,我们学过了三层框架,即:UI.BLL.DAL.我们将页面显示.逻辑处理和数据访问进行分层,避免了一层.两层的混乱.而后,我们又在经典三层的基础上,应用设计模式:外观.抽象工厂+反射,使得 ...

  5. 【EF 1】EF实体框架 原理+实例

    一.知识回顾 到目前为止,自己学到的链接数据库操作已经经历了几个阶段,分别是:学生信息管理和(第一次)机房收费时的直接连接数据库操作表格,然后是机房个人重构中应用的操作实体,在其中还利用了一个很重要的 ...

  6. EF实体框架之CodeFirst一

    对于SQL Server.MySql.Oracle等这些传统的数据库,基本都是关系型数据库,都是体现实体与实体之间的联系,在以前开发时,可能先根据需求设计数据库,然后在写Model和业务逻辑,对于Mo ...

  7. EF实体框架之CodeFirst四

    在EF实体框架之CodeFirst二中也提到数据库里面一般包括表.列.约束.主外键.级联操作.实体关系(E-R图).存储过程.视图.锁.事务.数据库结构更新等.前面几篇博客把表.存储过程.视图这些算是 ...

  8. C#.Net EF实体框架入门视频教程

    当前位置: 主页 > 编程开发 > C_VC视频教程 > C#.Net EF实体框架入门视频教程 > kingstone金士顿手机内存卡16G仅65元 1.EF实体框架之增加查 ...

  9. Config File Settings Of EF——实体框架的配置文件设置

    我亦MSDN 原文地址 http://msdn.microsoft.com/en-us/data/jj556606 Entity Framework allows a number of settin ...

随机推荐

  1. fiddler_技巧01

    1.选择一个包后,要点击 "Inspectors"标签页 才能有"Raw"标签页 才能看到原始的详细信息 2. 3. 4. 5.

  2. 标准W3C盒子模型和IE盒子模型CSS布局经典盒子模型(转)

    盒子模型是css中一个重要的概念,理解了盒子模型才能更好的排版.其实盒子模型有两种,分别是 ie 盒子模型和标准 w3c 盒子模型.他们对盒子模型的解释各不相同,先来看看我们熟知的标准盒子模型: 从上 ...

  3. static修饰的静态内部类

    Java里面static一般用来修饰成员变量或函数.但有一种特殊用法是用static修饰内部类,普通类是不允许声明为静态的,只有内部类才可以.被static修饰的内部类可以直接作为一个普通类来使用,而 ...

  4. PHP Cookie Session

    这些都是基础知识,不过有必要做深入了解.先简单介绍一下. 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择, 都纪 ...

  5. es5 and es6

    es5学习地址:http://www.zhangxinxu.com/wordpress/2013/04/es5%E6%96%B0%E5%A2%9E%E6%95%B0%E7%BB%84%E6%96%B9 ...

  6. Bug总结流程

    小明入职已有两年,期间测试能力已不知不觉成长许多,得到了Leader大熊的高度认可.回首这两年间,小明对"Bug总结流程"印象最为深刻,他对这个流程的认识在不断改变着:从最初的好奇 ...

  7. cf Gym 101086M ACPC Headquarters : AASTMT (Stairway to Heaven)

    题目: Description standard input/output As most of you know, the Arab Academy for Science and Technolo ...

  8. 编写自定义Yeoman生成器

    转载自JSCON-简时空:<自定义Yeoman生成器> 1.Getting Started 1.1.设置Node模块 Yeoman提供了generator-generator方便快速编写自 ...

  9. Sample a balance dataset from imbalance dataset and save it(从不平衡数据中抽取平衡数据,并保存)

    有时我们在实际分类数据挖掘中经常会遇到,类别样本很不均衡,直接使用这种不均衡数据会影响一些模型的分类效果,如logistic regression,SVM等,一种解决办法就是对数据进行均衡采样,这里就 ...

  10. kaggle数据挖掘竞赛初步--Titanic<派生属性&维归约>

    完整代码: https://github.com/cindycindyhi/kaggle-Titanic 特征工程系列: Titanic系列之原始数据分析和数据处理 Titanic系列之数据变换 Ti ...