示例#1
0
 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;
            }
        }
示例#5
0
 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;
     }
 }