示例#1
0
        public virtual List <T> List(Expression <Func <T, bool> > criteria)
        {
            var q = SqlGeneratorContext.GetSqlGenerator <T>().GetSelectAll(criteria);

            return(AppDbContext.Instance.Connection.Query <T>(q.GetSql(), q.Param,
                                                              AppDbContext.Instance.Transaction).ToList());
        }
示例#2
0
        public virtual List <T> List(ISpecification <T> spec)
        {
            var q = SqlGeneratorContext.GetSqlGenerator <T>().GetSelectAll(spec.Criteria);

            return(AppDbContext.Instance.Connection.Query <T>(q.GetSql(), q.Param,
                                                              AppDbContext.Instance.Transaction).ToList());
        }
示例#3
0
        public virtual T GetSingle(Expression <Func <T, bool> > criteria)
        {
            var q = SqlGeneratorContext.GetSqlGenerator <T>().GetSelectFirst(criteria);

            return(AppDbContext.Instance.Connection.QueryFirstOrDefault <T>(q.GetSql(), q.Param,
                                                                            AppDbContext.Instance.Transaction));
        }
示例#4
0
        public virtual void Delete(T entity)
        {
            var q = SqlGeneratorContext.GetSqlGenerator <T>().GetDelete(entity);

            AppDbContext.Instance.Connection.Execute(q.GetSql(), q.Param,
                                                     AppDbContext.Instance.Transaction);
        }
示例#5
0
        public virtual T Add(T entity)
        {
            var q = SqlGeneratorContext.GetSqlGenerator <T>().GetInsert(entity);
            var c = AppDbContext.Instance.Connection;

            if (c.Execute(q.GetSql(), q.Param,
                          AppDbContext.Instance.Transaction) <= 0)
            {
                throw new Exception("failed to insert entity");
            }
            return(entity);
        }
示例#6
0
        public virtual void Update(T entity)
        {
            var q = SqlGeneratorContext.GetSqlGenerator <T>().GetUpdate(entity);

            if (AppDbContext.Instance.Connection.Execute(q.GetSql(), entity,
                                                         AppDbContext.Instance.Transaction) <= 0)
            {
                q = SqlGeneratorContext.GetSqlGenerator <T>().GetSelectByIds(entity);
                var e = AppDbContext.Instance.Connection.QueryFirstOrDefault <T>(q.GetSql(), entity, AppDbContext.Instance.Transaction);
                if (e == null)
                {
                    StringBuilder sb = new StringBuilder("Entity updated by another user. Existing Entity:\n");
                    sb.Append(ObjectDumper.Dump(entity));
                    throw new AppException(ErrorConstants.DAL_ENTITY_UPDATEDBYOTHER, sb.ToString());
                }
            }
        }