EFHelper用于Web场景

public static class EFHelper
    {
        //初始化上下文
        public static T1Entities db = DbContextHelper.GetCurrentDbContext();


        //添加返回影响行数
        public static int Add<T>(T model) where T : class
        {
            db.Set<T>().Add(model);

            return db.SaveChanges();
        }


        //添加返回对象本身
        public static T Add2<T>(T model) where T : class
        {
            db.Set<T>().Add(model);
            db.SaveChanges();
            return model;
        }


        //查询单条数据
        public static T GetEntity<T>(Expression<Func<T, bool>> express) where T : class
        {
            return db.Set<T>().SingleOrDefault(express);
        }

        //查询所有
        public static List<T> GetEntityList<T>() where T : class
        {
            return db.Set<T>().ToList();
        }

        //按条件查询数据
        public static List<T> GetEntityList<T>(Expression<Func<T, bool>> express) where T : class
        {
            return db.Set<T>().Where(express).ToList();
        }


        //根据ID删除
        public static int Delete<T>(T model) where T : class
        {
            db.Set<T>().Attach(model);
            db.Set<T>().Remove(model);

            return db.SaveChanges();
        }

        //根据条件删除
        public static int DelList<T>(Expression<Func<T, bool>> delWhere) where T : class
        {
            //2.1.1 查询要删除的数据
            List<T> listDeleting = db.Set<T>().Where(delWhere).ToList();

            //2.1.2 将要删除的数据 用删除方法添加到 EF 容器中
            listDeleting.ForEach(u =>
            {
                db.Set<T>().Attach(u);  //先附加到EF 容器
                db.Set<T>().Remove(u); //标识为删除状态
            });

            //2.1.3 一次性生成sql语句 到数据库执行删除
            return db.SaveChanges();
        }



        //修改一条数据
        public static int Modify<T>(T model) where T : class
        {
            DbEntityEntry entry = db.Entry<T>(model);
            entry.State = System.Data.EntityState.Modified;

            return db.SaveChanges();
        }


        //修改实体,可修改指定属性
        public static int Modify<T>(T model, params string[] propertyNames) where T : class
        {
            //3.1.1 将对象添加到EF中
            DbEntityEntry entry = db.Entry<T>(model);

            //3.1.2 先设置对象的包装状态为 Unchanged
            entry.State = System.Data.EntityState.Unchanged;

            //3.1.3 循环被修改的属性名数组
            foreach (string propertyName in propertyNames)
            {
                //将每个被修改的属性的状态设置为已修改状态;这样在后面生成的修改语句时,就只为标识为已修改的属性更新
                entry.Property(propertyName).IsModified = true;
            }
            return db.SaveChanges();
        }


        //分页查询
        public static List<T> GetPagedList<T, TKey>(int pageSize, int pageIndex, out int rowCount, Expression<Func<T, bool>> whereLambda, Expression<Func<T, TKey>> orderByLambda, bool isAsc = true) where T : class
        {
            rowCount = db.Set<T>().Where(whereLambda).Count();

            if (isAsc)
            {
                return db.Set<T>().OrderBy(orderByLambda).Where(whereLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
            }
            else
            {
                return db.Set<T>().OrderByDescending(orderByLambda).Where(whereLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
            }
        }


    }

 

 

-----------------------------------------------------------------------------------------------------------------------------------------------------

 

 

 

 public class DbContextHelper
    {
        public static T1Entities GetCurrentDbContext()
        {

            T1Entities dbContext = HttpContext.Current.Items["MyDbContext"] as T1Entities;

            if (dbContext == null)
            {

                dbContext = new T1Entities();

                HttpContext.Current.Items["MyDbContext"] = dbContext;
            }

            return dbContext;
        }

    }

 

posted @ 2023-03-14 16:59  DJ的魔鬼邂逅  阅读(54)  评论(0)    收藏  举报