滕州网站建设滕州,做外贸网站平台,怀化网站建设公司,网站开发方案怎么写//----------------------------------------------------------------// Copyright (C) 2013 河南禄恒软件科技有限公司// // 功能描述#xff1a;实体框架数据仓储的操作接口#xff0c;包含增删改查接口////------------------------------------------------------------…//----------------------------------------------------------------// Copyright (C) 2013 河南禄恒软件科技有限公司// // 功能描述实体框架数据仓储的操作接口包含增删改查接口////----------------------------------------------------------------using System;using System.Data.Entity.Infrastructure;using System.Data.Objects;using System.Linq;using System.Linq.Expressions;using System.Data.Entity;using EntityFramework.Extensions;namespace Qmvc.DataAccess.EntityRepository{ /// summary /// 实体框架数据仓储的基类 /// /summary /// typeparam nameTContext提供用于查询和使用对象形式的实体数据的功能的实体上下文/typeparam /// typeparam nameT表示用于执行创建、读取、更新和删除操作的类型化实体集/typeparam public abstract class EntityRepositoryBaseTContext, T : IRepositoryT where TContext : DbContext where T : class, new() { /// summary /// 表示用于执行创建、读取、更新和删除操作的类型化实体集 /// /summary private DbSetT _dbSet; /// summary /// /// /summary protected EntityRepositoryBase() { IsOwnContext false; } /// summary /// 提供用于查询和使用对象形式的实体数据的功能的实体上下文 /// /summary protected virtual TContext Context { get; set; } /// summary /// 表示用于执行创建、读取、更新和删除操作的类型化实体集 /// /summary protected virtual DbSetT Set { get { return _dbSet ?? (_dbSet Context.SetT()); } set { _dbSet value; } } /// summary /// 是否拥有上下文 /// /summary protected bool IsOwnContext { get; set; } /// summary /// 返回一个 System.Linq.IQueryable /// /summary /// returns一个 System.Linq.IQueryable包含满足由 predicate 指定的条件的元素/returns public virtual IQueryableT All() { return Set.Where(p true); } /// summary /// 返回一个 System.Linq.IQueryable包含满足由 predicate 指定的条件的元素 /// /summary /// param namepredicate用于测试每个元素是否满足条件的函数/param /// returns一个 System.Linq.IQueryable包含满足由 predicate 指定的条件的元素/returns public virtual IQueryableT Where(ExpressionFuncT, bool predicate) { var query Set.Where(predicate); return query; } /// summary /// 返回一个 System.Linq.IQueryableT包含满足由 predicate 和 分页参数 指定的条件的元素并根据键对其元素排序/T /// /summary /// param namepredicate用于测试每个元素是否满足条件的函数/param /// param namepageSize页大小/param /// param namepageIndex页码/param /// param nameorderingSelector用于从元素中提取键的函数/param /// param nameorderBy排序类型/param /// param namerecCount总数量/param /// returns一个 System.Linq.IQueryableT/包含满足由 predicate 和 分页参数 指定的条件的元素并根据键对其元素排序/returns public virtual IQueryableT WhereTKey(ExpressionFuncT, bool predicate, int pageSize, int pageIndex, ExpressionFuncT, TKey orderingSelector, OrderingOrders orderBy, out int recCount) { IQueryableT query Set.Where(predicate); recCount query.Count(); query orderBy OrderingOrders.ASC ? query.OrderBy(orderingSelector).AsQueryable() : query.OrderByDescending(orderingSelector).AsQueryable(); query query.Skip((pageIndex - 1) * pageSize).Take(pageSize); return query; } /// summary /// 返回一个 System.Linq.IQueryableT/包含满足由 predicate 指定的条件的元素并根据键对其元素排序 /// /summary /// param namepredicate用于测试每个元素是否满足条件的函数/param /// param nameorderingSelector用于从元素中提取键的函数/param /// param nameorderBy排序/param /// returns一个 System.Linq.IQueryableT/包含满足由 predicate 指定的条件的元素并根据键对其元素排序/returns public virtual IQueryableT WhereTKey(ExpressionFuncT, bool predicate, ExpressionFuncT, TKey orderingSelector, OrderingOrders orderBy) { IQueryableT query Set.Where(predicate); query orderBy OrderingOrders.ASC ? query.OrderBy(orderingSelector).AsQueryable() : query.OrderByDescending(orderingSelector).AsQueryable(); return query; } /// summary /// 通过SQL查询数据结果 /// /summary /// typeparam nameTKey/typeparam /// param namesql/param /// param nameparameters/param /// returns/returns public virtual IQueryableT WhereTKey(string sql, params object[] parameters) { IQueryableT query Set.SqlQuery(sql, parameters).AsQueryable(); return query; } /// summary /// 返回序列的唯一元素如果该序列并非恰好包含一个元素则会引发异常。 /// /summary /// param namepredicate用于测试每个元素是否满足条件的函数/param /// returns单个元素/returns public virtual T Single(ExpressionFuncT, bool predicate) { return Set.Single(predicate); } /// summary /// 返回序列的唯一元素如果该序列并非恰好包含一个元素则会引发异常。 /// /summary /// param namepredicate用于测试每个元素是否满足条件的函数/param /// param nameorderingSelector用于从元素中提取键的函数/param /// param nameorderBy排序/param /// returns单个元素/returns public virtual T SingleTKey(ExpressionFuncT, bool predicate, ExpressionFuncT, TKey orderingSelector, OrderingOrders orderBy) { IQueryableT query Set.Where(predicate); query orderBy OrderingOrders.ASC ? query.OrderBy(orderingSelector).AsQueryable() : query.OrderByDescending(orderingSelector).AsQueryable(); return query.Single(); } /// summary /// 返回序列中满足指定条件的唯一元素如果序列中不包含任何元素则返回默认值 /// /summary /// param namepredicate用于测试每个元素是否满足条件的函数/param /// returns唯一元素/returns public virtual T FirstOrDefault(ExpressionFuncT, bool predicate) { return Set.FirstOrDefault(predicate); } /// summary /// 返回序列中满足指定条件的唯一元素如果序列中不包含任何元素则返回默认值 /// /summary /// param namepredicate用于测试每个元素是否满足条件的函数/param /// param nameorderingSelector用于从元素中提取键的函数/param /// param nameorderBy排序/param /// returns唯一元素/returns public virtual T FirstOrDefaultTKey(ExpressionFuncT, bool predicate, ExpressionFuncT, TKey orderingSelector, OrderingOrders orderBy) { IQueryableT query Set.Where(predicate); query orderBy OrderingOrders.ASC ? query.OrderBy(orderingSelector).AsQueryable() : query.OrderByDescending(orderingSelector).AsQueryable(); return query.FirstOrDefault(); } /// summary /// 返回指定序列中满足条件的元素数量 /// /summary /// param namepredicate用于测试每个元素是否满足条件的函数/param /// returns元素数量/returns public virtual int Count(ExpressionFuncT, bool predicate) { return Set.Count(predicate); } /// summary /// 将对象添加到当前实体集中的对象上下文如果 IsOwnContex true将对象保存到数据源 /// /summary /// param nameentity实体对象/param /// returns操作是否成功/returns public virtual bool Add(T entity) { bool isSucceed; Set.Add(entity); if (IsOwnContext) isSucceed Context.SaveChanges() 0; else isSucceed true; return isSucceed; } /// summary /// 将对象标记为待删除如果 IsOwnContex true将对象保存到数据源 /// /summary /// param nameentity实体对象/param /// returns操作是否成功/returns public virtual bool Delete(T entity) { bool isSucceed; Set.Remove(entity); if (IsOwnContext) isSucceed Context.SaveChanges() 0; else isSucceed true; return isSucceed; } /// summary /// 将满足 predicate 指定的条件的元素对象标记为待删除 /// /summary /// param namepredicate用于测试每个元素是否满足条件的函数/param /// returns操作是否成功/returns public virtual bool Delete(ExpressionFuncT, bool predicate) { return Set.Where(predicate).Delete() 0; } /// summary /// 将满足 predicate 指定的条件的元素对象更新为满足 updatePredicate 条件的属性 /// /summary /// param namepredicate用于测试每个元素是否满足条件的函数/param /// param nameupdatePredicate用于构建对象的函数/param /// returns操作是否成功/returns public virtual bool Update(ExpressionFuncT, bool predicate, ExpressionFuncT, T updatePredicate) { return Set.Update(predicate, updatePredicate) 0; } /// summary /// /// /summary public void Dispose() { if ((IsOwnContext) (Context ! null)) { Context.Dispose(); } GC.SuppressFinalize(this); } /// summary /// 临时把实休对象保存在管理对象中 /// /summary /// param nameentity/param public virtual void AddEntity(T entity) { Set.Add(entity); } /// summary /// 将所有更新保存到数据源并重置对象上下文中的更改跟踪。 /// /summary /// returns /// 在调用 System.Data.Objects.ObjectContext.SaveChanges() 时处于 /// System.Data.EntityState.Added、System.Data.EntityState.Modified或 System.Data.EntityState.Deleted 状态的对象数。 /// /returns public int SaveChanges() { return Context.SaveChanges(); } }} 转自http://www.cnblogs.com/henanluheng/p/3785596.html转载于:https://www.cnblogs.com/gdutzhulm/p/3785710.html