您的位置:首页 > 其它

使用EF框架的增删改查和分页的公共类

2014-01-16 14:12 543 查看
public class BaseRepository<T> where T : class

    {

        //实例化EF框架

        DataModelContainer db = new DataModelContainer();

        //添加

        public T AddEntities(T entity)

        {

            db.Entry<T>(entity).State = EntityState.Added;

            db.SaveChanges();

            return entity;

        }

        //修改

        public bool UpdateEntities(T entity)

        {

            db.Set<T>().Attach(entity);

            db.Entry<T>(entity).State = EntityState.Modified;

            return db.SaveChanges() > 0;

        }

        //删除

        public bool DeleteEntities(T entity)

        {

            db.Set<T>().Attach(entity);

            db.Entry<T>(entity).State = EntityState.Deleted;

            return db.SaveChanges() > 0;

        }

        //查询

        public IQueryable<T> LoadEntities(Func<T, bool> wherelambda)

        {

            return db.Set<T>().Where<T>(wherelambda).AsQueryable();

        }

        //分页

        public IQueryable<T> LoadPagerEntities<S>(int pageSize, int pageIndex, out int total,

            Func<T, bool> whereLambda, bool isAsc, Func<T, S> orderByLambda)

        {

            var tempData = db.Set<T>().Where<T>(whereLambda);

            total = tempData.Count();

            //排序获取当前页的数据

            if (isAsc)

            {

                tempData = tempData.OrderBy<T, S>(orderByLambda).

                      Skip<T>(pageSize * (pageIndex - 1)).

                      Take<T>(pageSize).AsQueryable();

            }

            else

            {

                tempData = tempData.OrderByDescending<T, S>(orderByLambda).

                     Skip<T>(pageSize * (pageIndex - 1)).

                     Take<T>(pageSize).AsQueryable();

            }

            return tempData.AsQueryable();

        }

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  .net MVC3 ef