/// <summary> /// Initializes a new instance of the <see cref="GenericRepository{TEntity}" /> class. /// </summary> /// <param name="context">The context.</param> /// <exception cref="ArgumentNullException"></exception> public GenericRepository(DbContext context) { Context = context; AppUtility.ValidateContext(CurrentDbContext); try { CurrentDbSet = CurrentDbContext.Set <TEntity>(); } catch (SqlException sqex) { Audit.Log.Error(AppConstants.ErrorMessages.SqlExceptionMessage, sqex); throw; } catch (DbException dbex) { Audit.Log.Error(AppConstants.ErrorMessages.DbExceptionMessage, dbex); throw; } catch (Exception ex) { Audit.Log.Error(AppConstants.ErrorMessages.ExceptionMessage, ex); throw; } }
public async Task <List <T> > AddAsync <T>(List <T> entity) where T : BaseModel, new() { await CurrentDbContext.Set <T>().AddRangeAsync(entity); //DbContext.Entry(entity).State = EntityState.Added; return(entity); }
/// <summary> /// 返回分页模型 /// </summary> /// <typeparam name="T"></typeparam> /// <typeparam name="TKey"></typeparam> /// <param name="currentPage"></param> /// <param name="pageSize"></param> /// <param name="whereLambda"></param> /// <param name="isAsc"></param> /// <param name="orderBy"></param> /// <returns></returns> public async Task <PageResponse <T> > LoadPageEntitiesAsync <T, TKey>(int currentPage, int pageSize, Expression <Func <T, bool> > whereLambda, bool isAsc, Expression <Func <T, TKey> > orderBy) where T : BaseModel, new() { currentPage = currentPage < 1 ? 1 : currentPage; pageSize = pageSize < 1 ? 20 : pageSize; var temp = CurrentDbContext.Set <T>().AsNoTracking().Where(whereLambda); //去掉.AsQueryable().AsNoTracking(),将下面改为 var rest = new PageResponse <T>(); rest.CurrentPage = currentPage; rest.PageSize = pageSize; rest.RecordTotal = await temp.CountAsync();//记录总条数时,自动设置了总页数 if (isAsc) { rest.PageData = await temp.OrderBy(orderBy) .Skip(pageSize * (currentPage - 1)) .Take(pageSize).Select(t => new T()).ToListAsync(); //去掉.AsQueryable(),添加.select(t=>new Dto()).ToList() } rest.PageData = await temp.OrderByDescending(orderBy) .Skip(pageSize * (currentPage - 1)) .Take(pageSize).Select(t => new T()).ToListAsync(); //.select(t=>new Dto()).ToList() return(rest); }
/// <summary> /// 得到IQueryable数据 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="whereLambda"></param> /// <returns></returns> public IQueryable <T> LoadEntities <T>(Expression <Func <T, bool> > whereLambda = null) where T : BaseModel, new() { if (whereLambda == null) { return(CurrentDbContext.Set <T>().Where(c => true)); } return(CurrentDbContext.Set <T>().Where(whereLambda)); }
/// <summary> /// EntityService cstr /// </summary> public EntityService() { XmlConfigurator.Configure(); // if (CurrentDbContext != null) { CurrentDbSet = CurrentDbContext.Set <TEntity>(); } Audit.Log.Info("EntityService :: contructor initialized"); }
/// <summary> /// Initializes a new instance of the <see cref="GenericRepository{TEntity}" /> class. /// </summary> public GenericRepository() { XmlConfigurator.Configure(); // if (CurrentDbContext != null) { CurrentDbSet = CurrentDbContext.Set <TEntity>(); } Audit.Log.Info("GenericRepository() :: initialized in constructor"); }
/// <summary> /// 从某个表中获取分页数据 /// </summary> /// <typeparam name="T"></typeparam> /// <typeparam name="TKey"></typeparam> /// <param name="currentPage"></param> /// <param name="pageSize"></param> /// <param name="totalCount"></param> /// <param name="pageCount"></param> /// <param name="whereLambda"></param> /// <param name="isAsc"></param> /// <param name="orderBy"></param> /// <returns></returns> public List <T> LoadPageEntities <T, TKey>(int currentPage, int pageSize, out int totalCount, out int pageCount, Expression <Func <T, bool> > whereLambda, bool isAsc, Expression <Func <T, TKey> > orderBy) where T : BaseModel, new() { currentPage = currentPage < 1 ? 1 : currentPage; pageSize = pageSize < 1 ? 20 : pageSize; var temp = CurrentDbContext.Set <T>().AsNoTracking().Where(whereLambda); //去掉.AsQueryable().AsNoTracking(),将下面改为 totalCount = temp.Count(); pageCount = (int)Math.Ceiling((double)totalCount / pageSize); if (isAsc) { return(temp.OrderBy(orderBy) .Skip(pageSize * (currentPage - 1)) .Take(pageSize).Select(t => new T()).ToList()); //去掉.AsQueryable(),添加.select(t=>new Dto()).ToList() } return(temp.OrderByDescending(orderBy) .Skip(pageSize * (currentPage - 1)) .Take(pageSize).Select(t => new T()).ToList()); //.select(t=>new Dto()).ToList() }
protected LGTDaoBase() { CurrentDbContext = LGTDBContextFactory.Current.GetInstance <T1>(); CurrentDbSet = CurrentDbContext.Set <T>(); }
/// <summary> /// 根据主键得到数据 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="keyValues"></param> /// <returns></returns> public T Find <T>(params object[] keyValues) where T : BaseModel, new() { return(CurrentDbContext.Set <T>().Find(keyValues)); }
/// <summary> /// 得到条数 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="countLambda"></param> /// <returns></returns> public int Count <T>(Expression <Func <T, bool> > countLambda) where T : BaseModel, new() { return(CurrentDbContext.Set <T>().AsNoTracking().Count(countLambda)); }
public IList <TEntity> GetListByTopN(int TopN, string Where, string Order, string FieldsName = "*") { string tEntityTypeString = typeof(TEntity).Name; string Primarykey = "ID"; #region page parameter SqlParameter[] parameterObject = new SqlParameter[] { new SqlParameter { DbType = DbType.String, ParameterName = "TableName", Value = tEntityTypeString }, new SqlParameter { DbType = DbType.String, ParameterName = "Primarykey", Value = Primarykey }, new SqlParameter { DbType = DbType.String, ParameterName = "FieldsName", Value = FieldsName }, new SqlParameter { DbType = DbType.String, ParameterName = "ByWHERE", Value = Where }, new SqlParameter { DbType = DbType.String, ParameterName = "ByOrder", Value = Order }, new SqlParameter { DbType = DbType.Int32, ParameterName = "PageSize", Value = TopN }, new SqlParameter { DbType = DbType.Int32, ParameterName = "PageIndex", Value = 1 }, new SqlParameter { DbType = DbType.Int32, ParameterName = "RecordCount", Direction = ParameterDirection.Output }, new SqlParameter { DbType = DbType.Int32, ParameterName = "PageCount", Direction = ParameterDirection.Output } }; #endregion var result = (from p in CurrentDbContext.Set <TEntity>().SqlQuery("EXECUTE Pager @TableName,@Primarykey,@FieldsName,@ByWHERE,@ByOrder,@PageSize,@PageIndex,@RecordCount output,@PageCount output", parameterObject) select p).ToList(); var list = result.ToList(); return(list); }
/// <summary> /// 查看是否存在 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="anyLambda"></param> /// <returns></returns> public async Task <bool> ExistAsync <T>(Expression <Func <T, bool> > anyLambda) where T : BaseModel, new() { return(await CurrentDbContext.Set <T>().AnyAsync(anyLambda)); }
/// <summary> /// 获取第一个或默认的 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="firstLambda"></param> /// <returns></returns> public T First <T>(Expression <Func <T, bool> > firstLambda) where T : BaseModel, new() { return(CurrentDbContext.Set <T>().FirstOrDefault(firstLambda)); }
public List <T> Add <T>(List <T> entity) where T : BaseModel, new() { CurrentDbContext.Set <T>().AddRange(entity); //DbContext.Entry(entity).State = EntityState.Added; return(entity); }
/// <summary> /// 根据某个条件 排序后 获取第一条 /// </summary> /// <typeparam name="T"></typeparam> /// <typeparam name="TOrderKey"></typeparam> /// <param name="match"></param> /// <param name="orderFun"></param> /// <returns></returns> public async Task <T> FirstOrderByDescAsync <T, TOrderKey>(Expression <Func <T, bool> > match, Expression <Func <T, TOrderKey> > orderFun) where T : BaseModel, new() { return(await CurrentDbContext.Set <T>().Where(match).OrderByDescending(orderFun).FirstOrDefaultAsync()); }
public T Add <T>(T entity) where T : BaseModel, new() { CurrentDbContext.Set <T>().Add(entity); //DbContext.Entry(entity).State = EntityState.Added; return(entity); }
/// <summary> /// 获取第一个或默认的 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="firstLambda"></param> /// <returns></returns> public async Task <T> FirstAsync <T>(Expression <Func <T, bool> > firstLambda) where T : BaseModel, new() { return(await CurrentDbContext.Set <T>().FirstOrDefaultAsync(firstLambda)); }
/// <summary> /// 得到条数 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="countLambda"></param> /// <returns></returns> public async Task <int> CountAsync <T>(Expression <Func <T, bool> > countLambda) where T : BaseModel, new() { return(await CurrentDbContext.Set <T>().AsNoTracking().CountAsync(countLambda)); }
/// <summary> /// 根据主键得到数据 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="keyValues"></param> /// <returns></returns> public async Task <T> FindAsync <T>(params object[] keyValues) where T : BaseModel, new() { return(await CurrentDbContext.Set <T>().FindAsync(keyValues)); }
/// <summary> /// 最新报价Top 20 /// </summary> /// <returns></returns> public IList <TradeDetail> FindNewDetails(int count) { return(CurrentDbContext.Set <TradeDetail>().OrderByDescending(t => t.ID).Take(count).ToList()); }
public void Delete <T>(params object[] keyValues) where T : BaseModel, new() { var entity = CurrentDbContext.Set <T>().Find(keyValues); CurrentDbContext.Entry(entity).State = EntityState.Deleted; }
public Mvc.Pager.PagedList <TEntity> GetList(string Where, string Order, int PageIndex = 1, int PageSize = 24, string FieldsName = "*") { string tEntityTypeString = typeof(TEntity).Name; string Primarykey = "ID"; #region page parameter SqlParameter[] parameterObject = new SqlParameter[] { new SqlParameter { DbType = DbType.String, ParameterName = "TableName", Value = tEntityTypeString }, new SqlParameter { DbType = DbType.String, ParameterName = "Primarykey", Value = Primarykey }, new SqlParameter { DbType = DbType.String, ParameterName = "FieldsName", Value = FieldsName }, new SqlParameter { DbType = DbType.String, ParameterName = "ByWHERE", Value = Where }, new SqlParameter { DbType = DbType.String, ParameterName = "ByOrder", Value = Order }, new SqlParameter { DbType = DbType.Int32, ParameterName = "PageSize", Value = PageSize }, new SqlParameter { DbType = DbType.Int32, ParameterName = "PageIndex", Value = PageIndex }, new SqlParameter { DbType = DbType.Int32, ParameterName = "RecordCount", Direction = ParameterDirection.Output }, new SqlParameter { DbType = DbType.Int32, ParameterName = "PageCount", Direction = ParameterDirection.Output } }; #endregion var result = (from p in CurrentDbContext.Set <TEntity>().SqlQuery("EXECUTE Pager @TableName,@Primarykey,@FieldsName,@ByWHERE,@ByOrder,@PageSize,@PageIndex,@RecordCount output,@PageCount output", parameterObject) select p).ToList(); int RecordCount = Convert.ToInt32(parameterObject[7].Value); return(new Mvc.Pager.PagedList <TEntity>(result, PageIndex, PageSize, RecordCount)); }
/// <summary> /// 查看是否存在 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="anyLambda"></param> /// <returns></returns> public bool Exist <T>(Expression <Func <T, bool> > anyLambda) where T : BaseModel, new() { return(CurrentDbContext.Set <T>().Any(anyLambda)); }
/// <summary> /// Gets all. /// </summary> /// <returns></returns> public override IEnumerable <Person> GetAll() { return(CurrentDbContext.Set <Person>().Include(x => x.FamilyMembers).AsEnumerable()); }
public async Task DeleteAsync <T>(params object[] keyValues) where T : BaseModel, new() { var entity = await CurrentDbContext.Set <T>().FindAsync(keyValues); CurrentDbContext.Entry(entity).State = EntityState.Deleted; }