EF通用CRED

    public class Operation:IDisposable
    {
        private EFContext ef {
            get { return new EFContext(); }
            }
        /// <summary>
        /// 添加一个实体对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        public void Add<T>(T t) where T:class
        {
            ef.Set<T>().Add(t);
            ef.SaveChanges();
        }
        /// <summary>
        /// 释放掉EFContext
        /// </summary>
        public void Dispose()
        {
            if (ef != null) {
                ef.Dispose();
            }
        }
        /// <summary>
        /// 获取实体对象的条数
        /// </summary>
        /// <typeparam name="T">实体对象类</typeparam>
        /// <param name="t">对象实例</param>
        /// <returns></returns>
        public int Count<T>(T t) where T : class 
        {
           return ef.Set<T>().Count<T>();
        }
        /// <summary>
        /// 获取实体对象的所有集合
        /// </summary>
        /// <typeparam name="T">实体类</typeparam>
        /// <returns></returns>
        public IQueryable<T> GetList<T>() where T : class 
        {
          return ef.Set<T>().AsQueryable<T>();
        }
       /// <summary>
        /// 获取实体对象的所有集合
       /// </summary>
        /// <typeparam name="T">实体类</typeparam>
       /// <param name="start">开始</param>
       /// <param name="count">行数size</param>
       /// <returns></returns>
        public IQueryable<T> GetLsit<T>(int start, int count)where T:class 
        {
          return  ef.Set<T>().Skip(start).Take(count);
        }
        /// <summary>
        /// 根据条件返回一个唯一的实体对象
        /// </summary>
        /// <typeparam name="T">实体类</typeparam>
        /// <param name="p">表达式</param>
        /// <returns></returns>
        public T Get<T>(System.Linq.Expressions.Expression<Func<T, bool>> p) where T : class 
        {
           return ef.Set<T>().SingleOrDefault<T>(p);
        }
        /// <summary>
        /// 删除指定的实体对象
        /// </summary>
        /// <typeparam name="T">实体类</typeparam>
        /// <param name="t">删除的实例对象</param>
        /// <returns>返回这个实例对象</returns>
        public T Delete<T>(T t) where T : class 
        {
            ef.Set<T>().Remove(t);
            ef.SaveChanges();
            return t;

        }
        /// <summary>
        /// 更新一个实体对象
        /// </summary>
        /// <typeparam name="T">实体类</typeparam>
        /// <param name="t">更新的实例对象</param>
        /// <returns>返回这个实例对象</returns>
        public T UpDate<T>(T t) where T : class 
        {
           ef.Entry<T>(t).State = System.Data.Entity.EntityState.Detached;
           ef.SaveChanges();
           return t;
         }
    }

 

posted @ 2014-11-07 16:21  2GyAn  阅读(285)  评论(0编辑  收藏  举报