Entity Framework(1)基础类接口

来源:互联网 发布:python post本地文件 编辑:程序博客网 时间:2024/05/18 22:42

ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案。

Entity Framework 利用了抽象化数据结构的方式,将每个数据库对象都转换成应用程序对象 (entity),而数据字段都转换为属性 (property),关系则转换为结合属性 (association),让数据库的 E/R 模型完全的转成对象模型。

但是我们在平时的开发中会对多张不同的表做同样的增删改查操作,为了偷懒,我们可以将这些同样的操作进行封装,编写成一个EF的基础类,以后我们开发就可以省去编写重复的代码,只需要直接调用即可。

接下来进入正题,我们先定义接口:

    /// <summary>    /// EF基础类接口    /// </summary>    /// <typeparam name="T">数据类型</typeparam>    public interface IEntityFramework<T> where T : class    {        #region 添加        /// <summary>        /// 添加一条数据        /// </summary>        /// <param name="model">添加的对象</param>        /// <returns>影响行数</returns>        int InsertByModel(T model);        /// <summary>        /// 添加多条数据        /// </summary>        /// <param name="modelList">添加的对象的集合</param>        /// <returns>影响行数</returns>        int InsertByList(List<T> modelList);        #endregion        #region 删除        /// <summary>        /// 删除一条数据        /// </summary>        /// <param name="model">删除的对象</param>        /// <returns>影响行数</returns>        int DeleteByModel(T model);        /// <summary>        /// 删除多条记录        /// </summary>        /// <param name="modelList">删除的对象的集合</param>        /// <returns>影响行数</returns>        int DeleteByList(List<T> modelList);        /// <summary>        /// 根据条件删除        /// </summary>        /// <param name="where">条件</param>        /// <returns>影响行数</returns>        int DeleteByWhere(Expression<Func<T, bool>> where);        #endregion        #region 修改        /// <summary>        /// 修改一条数据        /// </summary>        /// <param name="model">修改的对象</param>        /// <param name="propertys">需要修改的属性</param>        /// <returns>影响行数</returns>        int UpdateByModel(T model, params string[] propertys);        /// <summary>        /// 修改多条数据        /// </summary>        /// <param name="modelList">修改的对象的集合</param>        /// <param name="propertys">需要修改的属性</param>        /// <returns>影响行数</returns>        int UpdateByList(List<T> modelList, params string[] propertys);        /// <summary>        /// 根据条件更新        /// </summary>        /// <param name="where">条件</param>        /// <param name="model">修改的对象的集合</param>        /// <param name="propertys">需要修改的属性</param>        /// <returns>影响行数</returns>        int UpdateByWhere(Expression<Func<T, bool>> where, T model, params string[] propertys);        #endregion        #region 查询        /// <summary>        /// 是否存在记录        /// </summary>        /// <param name="where">条件</param>        /// <param name="count">条数</param>        /// <returns>是否存在</returns>        bool Exists(Expression<Func<T, bool>> where, out int count);        /// <summary>        /// 获取前几条数据        /// </summary>        /// <typeparam name="Key">表</typeparam>        /// <param name="where">条件</param>        /// <param name="orderBy">排序的字段</param>        /// <param name="isAsc">true顺序,false倒序</param>        /// <param name="top">前n条</param>        /// <returns></returns>        IQueryable<T> QureyTop<Key>(Expression<Func<T, bool>> where, Expression<Func<T, Key>> orderBy, bool isAsc, int top, out int total);        /// <summary>        /// 获取总条数        /// </summary>        /// <param name="where">条件</param>        /// <returns>总条数</returns>        int Total(Expression<Func<T, bool>> where);        /// <summary>        /// 条件查询带分页        /// </summary>        /// <typeparam name="Key">用于排序的属性</typeparam>        /// <param name="where">条件</param>        /// <param name="orderBy">排序</param>        /// <param name="isAsc">true顺序,false倒序</param>        /// <param name="pageIndex">页数</param>        /// <param name="pageSize">每页条数</param>        /// <param name="total">总数据量</param>        /// <returns></returns>        IQueryable<T> PagingQuery<Key>(Expression<Func<T, bool>> where, Expression<Func<T, Key>> orderBy, bool isAsc, int pageIndex, int pageSize, out int total);        #endregion    }