对EF的封装
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.Objects.DataClasses; using ZBService.Model; using System.Linq.Expressions; namespace ZBService { public abstract class ServiceBase<T> where T:EntityObject { protected mZhaoBiaoEntities zbEntities = new mZhaoBiaoEntities(); /// <summary> /// 判断是否存在 /// </summary> /// <param name="whereExpr"></param> /// <returns></returns> public bool Exist(Expression<Func<T,bool>> whereExpr) { return (this.Count(whereExpr) > 0); } /// <summary> /// 获取记录数 /// </summary> /// <param name="whereExpr"></param> /// <returns></returns> public int Count(Expression<Func<T, bool>> whereExpr) { return zbEntities.CreateObjectSet<T>().Where(whereExpr).Count(); } /// <summary> /// 查找实体对象 /// </summary> /// <param name="whereExpr"></param> /// <returns></returns> public T Find(Expression<Func<T, bool>> whereExpr) { return zbEntities.CreateObjectSet<T>().Where(whereExpr).FirstOrDefault(); } /// <summary> /// 查找实体对象列表 /// </summary> /// <param name="whereExpr"></param> /// <returns></returns> public IEnumerable<T> FindList<TKey>(Expression<Func<T, bool>> whereExpr, Expression<Func<T, TKey>> orderbyExpr, int orderDirection) { return this.FindList<T, TKey>(whereExpr,t=>t,orderbyExpr,orderDirection); } /// <summary> /// 查找实体对象列表 /// </summary> /// <typeparam name="TResult"></typeparam> /// <typeparam name="TKey"></typeparam> /// <param name="whereExpr"></param> /// <param name="selectExpr"></param> /// <param name="orderbyExpr"></param> /// <param name="orderDirection"></param> /// <param name="returnCount"></param> /// <returns></returns> public IEnumerable<TResult> FindList<TResult,TKey>(Expression<Func<T, bool>> whereExpr, Expression<Func<T, TResult>> selectExpr,Expression<Func<TResult,TKey>> orderbyExpr,int orderDirection,int returnCount=-1) { var result = zbEntities.CreateObjectSet<T>().Where(whereExpr).Select(selectExpr); if (result != null && result.Count() > 0) { if (returnCount > 0) { if (orderDirection > 0) { result = result.OrderByDescending(orderbyExpr).Take(returnCount); } else { result = result.OrderBy(orderbyExpr).Take(returnCount); } } return result.ToList(); } return null; } /// <summary> /// 分页查找实体对象列表 /// </summary> /// <typeparam name="TResult"></typeparam> /// <typeparam name="TKey"></typeparam> /// <param name="whereExpr"></param> /// <param name="selectExpr"></param> /// <param name="orderbyExpr"></param> /// <param name="orderDirection"></param> /// <param name="pageSize"></param> /// <param name="pageNo"></param> /// <param name="recordCount"></param> /// <returns></returns> public IEnumerable<TResult> FindListByPage<TResult,TKey>(Expression<Func<T, bool>> whereExpr, Expression<Func<T, TResult>> selectExpr,Expression<Func<TResult,TKey>> orderbyExpr,int orderDirection,int pageSize,int pageNo,out int recordCount) { var result = zbEntities.CreateObjectSet<T>().Where(whereExpr).Select(selectExpr); recordCount = result.Count(); if(pageNo>recordCount) pageNo=recordCount; if(pageNo<=0) pageNo=1; if (recordCount > 0) { if (recordCount > pageSize) { if (orderDirection > 0) { return result.OrderByDescending(orderbyExpr).Skip((pageNo - 1) * pageSize).Take(pageSize).ToList(); } else { return result.OrderBy(orderbyExpr).Skip((pageNo - 1) * pageSize).Take(pageSize).ToList(); } } else { if (orderDirection > 0) { return result.OrderByDescending(orderbyExpr).ToList(); } else { return result.OrderBy(orderbyExpr).ToList(); } } } return null; } /// <summary> /// 增加实体 /// </summary> /// <param name="entity"></param> public virtual void Add(T entity) { this.ValidateEntity(entity,ValidateMode.Add); zbEntities.CreateObjectSet<T>().AddObject(entity); } /// <summary> /// 增加实体列表 /// </summary> /// <param name="entities"></param> public virtual void AddList(IEnumerable<T> entities) { var objSet = zbEntities.CreateObjectSet<T>(); foreach (T entity in entities) { this.ValidateEntity(entity, ValidateMode.Add); objSet.AddObject(entity); } } /// <summary> /// 更新已分离实体,若未分离则不需要执行该方法 /// </summary> /// <param name="entity"></param> public virtual void Update(T entity) { this.ValidateEntity(entity, ValidateMode.Update); zbEntities.CreateObjectSet<T>().ApplyCurrentValues(entity); } /// <summary> /// 删除实体 /// </summary> /// <param name="entity"></param> public virtual void Delete(T entity) { this.ValidateEntity(entity, ValidateMode.Delete); zbEntities.CreateObjectSet<T>().DeleteObject(entity); } /// <summary> /// 删除实体 /// </summary> /// <param name="whereExpr"></param> public virtual void Delete(Expression<Func<T, bool>> whereExpr) { var objSet = zbEntities.CreateObjectSet<T>(); T entity = objSet.Where(whereExpr).Single(); //this.ValidateEntity(entity, ValidateMode.Delete); objSet.DeleteObject(entity); } /// <summary> /// 删除实体列表 /// </summary> /// <param name="entities"></param> public virtual void DeleteList(IEnumerable<T> entities) { var objSet = zbEntities.CreateObjectSet<T>(); foreach (T entity in entities) { //this.ValidateEntity(entity, ValidateMode.Delete); objSet.DeleteObject(entity); } } /// <summary> /// 提交保存所有变更操作 /// </summary> public void SubmitSave() { zbEntities.SaveChanges(); } /// <summary> /// 验证 /// </summary> /// <param name="entity"></param> /// <returns></returns> protected virtual void ValidateEntity(T entity,ValidateMode mode=ValidateMode.Add) { } /// <summary> /// 验证模式 /// </summary> protected enum ValidateMode { Add=0, Update=1, Delete=-1 } } }
转发地址:https://www.cnblogs.com/zuowj/p/4259515.html