/// <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;
            }
        }
示例#2
0
        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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
 /// <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));
 }
示例#5
0
        /// <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");
        }
示例#7
0
        /// <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>();
 }
示例#9
0
 /// <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));
 }
示例#10
0
 /// <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));
 }
示例#11
0
        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);
        }
示例#12
0
 /// <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));
 }
示例#13
0
 /// <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));
 }
示例#14
0
 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);
 }
示例#15
0
 /// <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());
 }
示例#16
0
 public T Add <T>(T entity) where T : BaseModel, new()
 {
     CurrentDbContext.Set <T>().Add(entity);
     //DbContext.Entry(entity).State = EntityState.Added;
     return(entity);
 }
示例#17
0
 /// <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));
 }
示例#18
0
 /// <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));
 }
示例#19
0
 /// <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));
 }
示例#20
0
 /// <summary>
 /// 最新报价Top 20
 /// </summary>
 /// <returns></returns>
 public IList <TradeDetail> FindNewDetails(int count)
 {
     return(CurrentDbContext.Set <TradeDetail>().OrderByDescending(t => t.ID).Take(count).ToList());
 }
示例#21
0
        public void Delete <T>(params object[] keyValues) where T : BaseModel, new()
        {
            var entity = CurrentDbContext.Set <T>().Find(keyValues);

            CurrentDbContext.Entry(entity).State = EntityState.Deleted;
        }
示例#22
0
        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));
        }
示例#23
0
 /// <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());
 }
示例#25
0
        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;
        }