zoukankan      html  css  js  c++  java
  • 对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
            }
    
        }
    }
    C#

    转发地址:https://www.cnblogs.com/zuowj/p/4259515.html

  • 相关阅读:
    刚刚找到的IP地址对应地区数据库
    SQL2000中像SQL2005中的Row_Number一样获取行号
    KindEditor3.4.4版的ASP.NET版本
    使用程序代码输出论坛回复第X层楼
    IIS上启用Gzip压缩(HTTP压缩)详解(PDF)
    ASP.NET中过滤HTML字符串的两个方法
    七个受用一生的心理寓言
    Android获取其他包的Context实例然后XX(转载)
    android junit基础教程
    java获取web容器地址
  • 原文地址:https://www.cnblogs.com/aqicheng/p/10025344.html
Copyright © 2011-2022 走看看