zoukankan      html  css  js  c++  java
  • 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);
        }
    }

  • 相关阅读:
    如何修改MySQL的默认安装路径
    给WordPress分类目录和页面添加斜杠
    制作macOS Sierra 正式版USB安装盘的方法
    Companion.JS 与 Microsoft Script Debugger 结合IE javaScript 调试工具
    启动Weblogic报出java.lang.OutOfMemoryError: PermGen space异常
    Spring中@Autowired注解、@Resource注解的区别
    webligc VALIDATION PROBLEMS WERE FOUND problem错误
    解决visio在win7下意外退出问题
    myeclipse 9.0 配svn 报 Failed to load JavaHL Library 解决方法
    powerDesigner 15 unable to list the users 解决方法
  • 原文地址:https://www.cnblogs.com/henanluheng/p/3785311.html
Copyright © 2011-2022 走看看