EF_Helper

 /// <summary>
        /// EF——对象操作-辅助类
        /// </summary>
        /// <typeparam name="M"></typeparam>
    public class EF_Helper<M> where M : DbContext, new()
    {
        /// <summary>
        /// DBEntities
        /// </summary>
        private M sd;
        /// <summary>
        /// 实例化DBEntities
        /// </summary>
        /// <returns></returns>
        private M GetDBEntities()
        {
            if (sd == null)
            {
                sd = new M();
            }
            return sd;
        }
        /// <summary>
        /// 添加数据到对象
        /// </summary>
        /// <typeparam name="T">对象</typeparam>
        /// <param name="t">对象名</param>
        /// <returns>true/false</returns>
        public bool Add<T>(T t) where T : class
        {
            M sde = GetDBEntities();
            sde.Set<T>().Add(t);
            return sde.SaveChanges() > 0;
        }
        /// <summary>
        /// 根据条件查询对象并返回对象集合
        /// </summary>
        /// <typeparam name="T">对象</typeparam>
        /// <param name="p">条件</param>
        /// <returns>对象集合list</returns>
        public List<T> GetList<T>(Expression<Func<T, bool>> p) where T : class
        {
            M sde = GetDBEntities();
            return sde.Set<T>().Where(p).ToList();
        }
        /// <summary>
        /// 根据条件查询对象
        /// </summary>
        /// <typeparam name="T">对象</typeparam>
        /// <param name="p">条件</param>
        /// <returns>对象</returns>
        public T GetNow<T>(Expression<Func<T, bool>> p) where T : class
        {
            M sde = GetDBEntities();
            return sde.Set<T>().Where(p).FirstOrDefault();
        }
        /// <summary>
        /// 根据条件获取临时对象,用于检测是否存在
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="p"></param>
        /// <returns></returns>
        public T GetisExistNow<T>(Expression<Func<T, bool>> p) where T : class
        {
            M sde = GetDBEntities();
            return sde.Set<T>().Where(p).AsNoTracking().FirstOrDefault();
        }
        /// <summary>
        /// 修改对象
        /// </summary>
        /// <typeparam name="T">对象</typeparam>
        /// <param name="t">对象名称</param>
        /// <returns>true/false</returns>
        public bool Update<T>(T t) where T : class
        {
            M sde = GetDBEntities();
            var ent = sde.Entry<T>(t);
            ent.State = EntityState.Unchanged;
            PropertyInfo[] pi = t.GetType().GetProperties();
            for (int i = 0; i < pi.Length; i++)
            {
                object obj = pi[i].GetValue(t);
                if (obj != null)
                {
                    ent.Property(pi[i].Name).IsModified = true;
                }
                else
                {
                    ent.Property(pi[i].Name).IsModified = true;
                }
            }
            return sde.SaveChanges() > 0;
        }
        /// <summary>
        /// 删除对象
        /// </summary>
        /// <typeparam name="T">对象</typeparam>
        /// <param name="t">对象名</param>
        /// <returns>true/false</returns>
        public bool Delete<T>(T t) where T : class
        {
            M sde = GetDBEntities();
            var ent = sde.Entry(t);
            ent.State = EntityState.Deleted;
            return sde.SaveChanges() > 0;

        }
        /// <summary>
        /// 分页查询
        /// </summary>
        /// <typeparam name="T">对象</typeparam>
        /// <typeparam name="TKey">int</typeparam>
        /// <param name="select">查询字段</param>
        /// <param name="where">查询条件</param>
        /// <param name="order">排序字段</param>
        /// <param name="pageIndex">当前页</param>
        /// <param name="pageSize">查询数据条数</param>
        /// <param name="Total">总共多少页</param>
        /// <param name="orderby">排序</param>
        /// getPageData<T, int>(t => new { t.ID, t.Name }, t => t.ID < 20, t => t.ID, 1, 10, out Total)
        /// <returns></returns>
        public List<dynamic> getPageData<T, TKey>(Expression<Func<T, dynamic>> select, Expression<Func<T, bool>> where, Expression<Func<T, TKey>> order, int pageIndex, int pageSize, out int Total, string orderby = "asc")
           where T : class
        {
            M sde = GetDBEntities();
            Total = sde.Set<T>().Where(where).Count();
            if (orderby == "desc")
            {
                var list = sde.Set<T>().Where(where).OrderByDescending(order).Select(select).Skip((pageIndex - 1) * pageSize).Take(pageSize);
                return list.ToList();
            }
            else
            {
                var list = sde.Set<T>().Where(where).OrderBy(order).Select(select).Skip((pageIndex - 1) * pageSize).Take(pageSize);
                return list.ToList();
            }
        }
        /// <summary>
        /// 执行SQL语句(查询语句除外)
        /// </summary>
        /// <param name="sqlStr"></param>
        /// <returns></returns>
        public int ExecuteSql(string sqlStr)
        {
            M sde = GetDBEntities();
            return sde.Database.ExecuteSqlCommand(sqlStr);
        }
        /// <summary>
        /// 执行SQL语句查询
        /// </summary>
        /// <typeparam name="T">对象</typeparam>
        /// <param name="t">对象名</param>
        /// <param name="sqlStr"></param>
        /// <returns></returns>
        public List<T> SqlQuery<T>(string sqlStr)
        {
            M sde = GetDBEntities();
            var info = sde.Database.SqlQuery<T>(sqlStr);
            return info.ToList();
        }

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值