Entity Framework(1)基础类接口

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
    }


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值