/// <summary> /// 查找指定主键的实体记录 /// </summary> /// <param name="key"> 指定主键 </param> /// <returns> 符合编号的记录,不存在返回null </returns> public virtual TEntity GetByKey(object key) { // 参数有效性检查 ArgumentValidationHelper.CheckForNullReference(key, "传入的对象key为空"); // 执行查询 return(EFContext.Set <TEntity>().Find(key)); }
// 1、返回IQueryable<TEntity>使用延迟加载技术 // 2、返回IEnumerable<TEntity>,需要把数据集加载到内存 /// <summary> /// 检查实体是否存在 /// </summary> /// <param name="predicate">查询条件表达式</param> /// <returns>是否存在</returns> public virtual bool CheckExists(Expression <Func <TEntity, bool> > predicate) { // 参数有效性检查 ArgumentValidationHelper.CheckForNullReference(predicate, "传入的对象key为空"); // 存在返回true,否则false return(EFContext.Set <TEntity>().Count(predicate) == 0 ? false :true); }
/// <summary> /// 批量插入实体记录集合 /// </summary> /// <param name="entities"> 实体记录集合 </param> /// <param name="isSave"> 是否执行保存 </param> /// <returns> 操作影响的行数 </returns> public virtual int Insert(IEnumerable <TEntity> entities, bool isSave = true) { // 参数有效性检查 ArgumentValidationHelper.CheckForNullReference(entities, "传入的对象t为空"); // 对象加入仓储上下文(暂不提交数据库) EFContext.RegisterNew(entities); // 立即提交或暂缓执行 return(isSave ? EFContext.Commit() : 0); }
/// <summary> /// 更新所有符合特定表达式的记录 /// </summary> /// <param name="predicate"> 查询条件谓语表达式 </param> /// <param name="isSave"> 是否执行保存 </param> /// <returns> 操作影响的行数 </returns> public virtual int Update(Expression <Func <TEntity, bool> > predicate, bool isSave = true) { // 参数有效性检查 ArgumentValidationHelper.CheckForNullReference(predicate, "传入的对象predicate为空"); // 依据条件表达式查询实体记录 List <TEntity> entities = EFContext.Set <TEntity>().Where(predicate).ToList(); // 记录存在则立即执行,否则返回0 return(entities.Count > 0 ? Update(entities, isSave) : 0); }
/// <summary> /// 更新实体记录 /// </summary> /// <param name="entity"> 实体对象 </param> /// <param name="isSave"> 是否执行保存 </param> /// <returns> 操作影响的行数 </returns> public virtual int Update(TEntity entity, bool isSave = true) { // 参数有效性检查 ArgumentValidationHelper.CheckForNullReference(entity, "传入的对象entity为空"); // 对象加入仓储上下文(暂不提交数据库) EFContext.RegisterModified(entity); //TEntity entity0 = EFContext. // 立即提交或暂缓执行 return(isSave ? EFContext.Commit() : 0); }
/// <summary> /// 删除指定编号的记录 /// </summary> /// <param name="id"> 实体记录编号 </param> /// <param name="isSave"> 是否执行保存 </param> /// <returns> 操作影响的行数 </returns> public virtual int Delete(object id, bool isSave = true) { // 参数有效性检查 ArgumentValidationHelper.CheckForNullReference(id, "传入的对象id为空"); // 实体记录在数据库是否存在 TEntity entity = EFContext.Set <TEntity>().Find(id); // 记录存在则立即执行,否则返回0 return(entity != null?Delete(entity, isSave) : 0); }
/// <summary> /// 删除实体记录 /// </summary> /// <param name="entity"> 实体对象 </param> /// <param name="isSave"> 是否执行保存 </param> /// <returns> 操作影响的行数 </returns> public virtual int Delete(TEntity entity, bool isSave = true) { // 参数有效性检查 ArgumentValidationHelper.CheckForNullReference(entity, "传入的对象t为空"); try { // 对象加入仓储上下文(暂不提交数据库) EFContext.RegisterDeleted(entity); } catch (InvalidOperationException) { Delete(entity.ID); } catch (Exception) { throw; } // 立即提交或暂缓执行 return(isSave ? EFContext.Commit() : 0); }