EFHelper用于非Web场景

public static class EFHelper
    {


        //新增一条数据
        public static int Add<T>(T model) where T : class
        {
            using (EFDemo001Entities db = new EFDemo001Entities())
            {
                db.Set<T>().Add(model);
                return db.SaveChanges();
            }
        }


        //修改一条数据
        public static void Modify<T>(T model) where T : class
        {
            using (EFDemo001Entities db = new EFDemo001Entities())
            {
                if (db.Entry<T>(model).State == EntityState.Detached)
                {
                    db.Set<T>().Attach(model);
                    db.Entry<T>(model).State = EntityState.Modified;
                }
                db.SaveChanges();
            }
        }


        //删除一条数据
        public static void Delete<T>(T model) where T : class
        {
            using (EFDemo001Entities db = new EFDemo001Entities())
            {
                db.Set<T>().Attach(model);
                db.Set<T>().Remove(model);

                db.SaveChanges();
            }
        }


        //按条件删除
        public static void DeleteList<T>(Expression<Func<T, bool>> express) where T : class
        {
            using (EFDemo001Entities db = new EFDemo001Entities())
            {

                //2.1.1 查询要删除的数据
                List<T> listDeleting = db.Set<T>().Where(express).ToList();

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

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


        //条件查单个实体
        public static T GetEntity<T>(Expression<Func<T, bool>> express) where T : class
        {
            using (EFDemo001Entities db = new EFDemo001Entities())
            {
                return db.Set<T>().SingleOrDefault(express);
            }
        }

        //所有数据
        public static List<T> GetEntityList<T>() where T : class
        {
            using (EFDemo001Entities db = new EFDemo001Entities())
            {
                return db.Set<T>().ToList();

            }
        }

        //条件查询
        public static List<T> GetEntityList<T>(Expression<Func<T, bool>> express) where T : class
        {
            using (EFDemo001Entities db = new EFDemo001Entities())
            {
                return db.Set<T>().Where(express).ToList();

            }
        }


        //分页列表
        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
        {
            using (EFDemo001Entities db = new EFDemo001Entities())
            {
                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();
                }

            }
        }

    }

 

----------------------------------------------------------------测试数据-------------------------------------------------------------------------

 

 

 static void Main(string[] args)
        {


            //Add
            UserInfo u = new UserInfo();
            u.Name = "山楂";
            u.Score = 98;
            EFHelper.Add<UserInfo>(u);

            // u = new UserInfo();
            //u.Name = "石榴";
            //EFHelper.Add<UserInfo>(u);


            //Modify
            //u.Id = 5;
            //EFHelper.Modify<UserInfo>(u);


            //EFHelper.Delete<UserInfo>(u);



            //EFHelper.DeleteList<UserInfo>(p => p.Money == 20);


            //UserInfo u = EFHelper.GetEntity<UserInfo>(p => p.Id == 7);


            //var data = EFHelper.GetEntityList<UserInfo>(p => p.Id > 7);


            //var data = EFHelper.GetEntityList<UserInfo>();


            //foreach (UserInfo u in data)
            //{
            //    Console.WriteLine(u.Name);
            //}



            //int count = 0;

            //var data = EFHelper.GetPagedList<UserInfo, int>(5, 2, out count, p => p.Id >= 0, p => p.Id, false);


            Console.WriteLine("ok");
            Console.ReadKey();


        }

 

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