public IEnumerable <QueryResult <T> > QueryAggregated(Action <IQueryBuilder <T> > query = null) { try { using (_metricsReporter.Report($"{_space}.Aggregate")) using (var connection = _connectionProvider.GetOpenConnection()) { return(connection .QueryAggregated <T>(q => { if (query != null) { query(new MoranbernateQueryBuilder <T>(q)); } }) .Select(x => new QueryResult <T> { Item = x.Item, RowCount = x.RowCount }) .ToList()); } } catch (Exception ex) { _perfLogger.Error("Error running aggregated query", ex); throw; } }
public IReadOnlyList<SqlObject> GetSqlObjects(ISqlConnectionProvider sqlConnectionProvider) { using (var conn = sqlConnectionProvider.GetOpenConnection()) { const string cmdText = @"SELECT s.name, s.object_id, s.parent_object_id, s.type FROM sys.objects s WHERE s.is_ms_shipped = 0"; var cmd = new SqlCommand { CommandText = cmdText, Connection = conn }; var result = new List<SqlObject>(); using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { result.Add( new SqlObject( reader.GetString(0), reader.GetInt32(1), reader.GetInt32(2), ObjectTypeUtil.GetObjectType(reader.GetString(3)) )); } } return result; } }
public IReadOnlyList<SqlExpressionDependency> GetExpressionDependencies(ISqlConnectionProvider sqlConnectionProvider) { using (var conn = sqlConnectionProvider.GetOpenConnection()) { const string cmdText = @"SELECT d.referencing_id, d.referencing_minor_id, d.referenced_id, d.referenced_minor_id FROM sys.sql_expression_dependencies d WHERE d.referencing_class = 1 and d.referenced_class = 1"; var cmd = new SqlCommand {CommandText = cmdText, Connection = conn}; var result = new List<SqlExpressionDependency>(); using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { result.Add(new SqlExpressionDependency( reader.GetInt32(0), reader.GetInt32(1), reader.GetInt32(2), reader.GetInt32(3))); } } return result; } }
public IReadOnlyList<Column> GetColumns(ISqlConnectionProvider sqlConnectionProvider) { const string cmdText = @"SELECT c.object_id, c.name, c.column_id, c.system_type_id, c.max_length, c.precision, c.scale, c.is_nullable, c.is_identity, c.is_computed FROM sys.columns c INNER JOIN sys.tables t ON c.object_id = t.object_id"; using (var conn = sqlConnectionProvider.GetOpenConnection()) { var cmd = new SqlCommand { CommandText = cmdText, Connection = conn }; var results = new List<Column>(); using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { var column = new Column(); column.TableObjectId = reader.GetInt32(0); column.Name = reader.GetString(1); column.ColumnId = reader.GetInt32(2); column.ColumnType = (ColumnType) reader.GetByte(3); column.MaxLength = reader.GetInt16(4); column.Precision = reader.GetByte(5); column.Scale = reader.GetByte(6); column.IsNullable = reader.GetBoolean(7); column.IsIdentity = reader.GetBoolean(8); column.IsComputed = reader.GetBoolean(9); results.Add(column); } } return results; } }
public int Count(Action <IQueryBuilder <T> > queryManipulator) { using (_metricsReporter.Report($"{_space}.Count")) using (var conn = _connectionProvider.GetOpenConnection()) { var count = conn.Count <T>(restrictable => { if (queryManipulator != null) { queryManipulator(new MoranbernateRestrictions <T>(restrictable)); } }); return(Convert.ToInt32(count)); } }
public IReadOnlyList<SqlModule> GetModules(ISqlConnectionProvider sqlConnectionProvider) { const string cmdText = @"SELECT m.object_id, m.definition FROM sys.sql_modules m"; using (var conn = sqlConnectionProvider.GetOpenConnection()) { var cmd = new SqlCommand {CommandText = cmdText, Connection = conn}; var results = new List<SqlModule>(); using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { results.Add(new SqlModule(reader.GetInt32(0), reader.GetString(1))); } } return results; } }
public IReadOnlyList<ForeignKey> GetForeignKeys(ISqlConnectionProvider sqlConnectionProvider) { using (var conn = sqlConnectionProvider.GetOpenConnection()) { const string cmdText = @"SELECT f.object_id, f.parent_object_id, f.referenced_object_id FROM sys.foreign_keys f"; var cmd = new SqlCommand {CommandText = cmdText, Connection = conn}; var results = new List<ForeignKey>(); using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { results.Add(new ForeignKey(reader.GetInt32(0), reader.GetInt32(1), reader.GetInt32(2))); } } return results; } }