public long Count <T>(SelectExpression <T> selectCondition, FromExpression <T> fromCondition, WhereExpression <T> whereCondition, TransactionContext transContext) where T : DatabaseEntity, new() { #region Argument Adjusting if (selectCondition != null) { selectCondition.Select(t => t.Id).Select(t => t.Deleted).Select(t => t.LastTime).Select(t => t.LastUser).Select(t => t.Version); } if (whereCondition == null) { whereCondition = Where <T>(); } whereCondition.And(t => t.Deleted == false); #endregion long count = -1; DatabaseEntityDef entityDef = _entityDefFactory.GetDef <T>(); try { IDbCommand command = _sqlBuilder.CreateCountCommand(fromCondition, whereCondition); object countObj = _databaseEngine.ExecuteCommandScalar(transContext?.Transaction, entityDef.DatabaseName, command, transContext != null); count = Convert.ToInt32(countObj, GlobalSettings.Culture); } catch (DbException ex) { throw ex;// _logger.LogCritical(ex.Message); } return(count); }