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()); }
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()); }
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)); }
public virtual void Delete(T entity) { var q = SqlGeneratorContext.GetSqlGenerator <T>().GetDelete(entity); AppDbContext.Instance.Connection.Execute(q.GetSql(), q.Param, AppDbContext.Instance.Transaction); }
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); }
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()); } } }