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 System.Collections.Generic.IReadOnlyList<TableDefinition> GetDefinitions(ISqlConnectionProvider sqlConnectionProvider)
        {
            var conn = sqlConnectionProvider.GetConnection();
            var dbName = conn.Database;
            var serverConnection = new ServerConnection(conn);
            var server = new Server(serverConnection);
            var scripter = new Scripter(server);
            scripter.Options.ScriptDrops = false;
            scripter.Options.WithDependencies = false;
            scripter.Options.NoCollation = true;

            var db = server.Databases[dbName];
            var results = new List<TableDefinition>();

            foreach (Table table in db.Tables)
            {
                if (table.IsSystemObject)
                    continue;
                var id = table.ID;
                var definitions = scripter.Script(new Urn[] {table.Urn});
                var sb = new StringBuilder();
                foreach (var definition in definitions)
                {
                    sb.AppendLine(definition);
                }
                var flattened = sb.ToString();
                results.Add(new TableDefinition(id, flattened));
            }

            return results;
        }
        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<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 Schema GetSchema(ISqlConnectionProvider sqlConnectionProvider)
        {
            var objects = SqlObjectProvider.GetSqlObjects(sqlConnectionProvider);
            var sqlExpressionDependencies = SqlExpressionDependencyProvider.GetExpressionDependencies(sqlConnectionProvider);
            var foreignKeys = ForeignKeyProvider.GetForeignKeys(sqlConnectionProvider);
            var modules = SqlModuleProvider.GetModules(sqlConnectionProvider);
            var tableDefinitions = TableDefinitionProvider.GetDefinitions(sqlConnectionProvider);
            var columns = ColumnProvider.GetColumns(sqlConnectionProvider);

            return new Schema(
                objects,
                sqlExpressionDependencies,
                foreignKeys,
                modules,
                tableDefinitions,
                columns);
        }
 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;
     }
 }
 public ObjectProvider(ISqlQueryBuilder <T> queryBuilder, ISqlConnectionProvider connectionProvider)
 {
     _queryBuilder       = queryBuilder ?? throw new ArgumentNullException(nameof(queryBuilder));
     _connectionProvider = connectionProvider ?? throw new ArgumentNullException(nameof(connectionProvider));
 }
 protected MonetaryAggregateRepository(ISqlConnectionProvider sqlConnectionProvider, string tableName)
 {
     _sqlConnectionProvider = sqlConnectionProvider;
     _tableName             = tableName;
 }
示例#10
0
 /// <summary>
 /// 为了提供统一的操作方式,所以也有与CodeArt.Data.SqlContext同样的方法
 /// </summary>
 /// <param name="connectionProvider"></param>
 public static void RegisterConnectionProvider(ISqlConnectionProvider connectionProvider)
 {
     CodeArt.Data.SqlContext.RegisterConnectionProvider(connectionProvider);
 }
示例#11
0
 public SqlTableReference(ISqlConnectionProvider sqlConnectionProvider, string schemaName, string tableName)
 {
     SqlConnectionProvider = sqlConnectionProvider;
     SchemaName            = schemaName.Debracketize();
     TableName             = tableName.Debracketize();
 }
示例#12
0
 public SqlCashRepository(ISqlConnectionProvider sqlConnectionProvider)
 {
     _sqlConnectionProvider = sqlConnectionProvider;
 }
 public TestTableInitializer(ISqlConnectionProvider sqlConnectionProvider, TestTableScripts scripts)
 {
     _sqlConnectionProvider = sqlConnectionProvider;
     _scripts = scripts;
 }
示例#14
0
 public static string ServerNameWithDbName(this ISqlConnectionProvider sqlConnectionProvider)
 {
     return($"{sqlConnectionProvider.ServerName}\\{sqlConnectionProvider.DatabaseName}");
 }
 public TableSchemaReader(ISqlConnectionProvider provider)
 {
     Provider = provider;
 }
示例#16
0
 public StorageSchemeMigrator(ISqlConnectionProvider connectionProvider)
 {
     _connectionProvider = connectionProvider;
 }
示例#17
0
 public FrmPrincipal(SimpleInjector.Container container, IFormOpener formOpener, IDataBaseBackupGenerator backupGenerator, ISqlConnectionProvider sqlConnectionProvider)
 {
     RadControl.EnableDpiScaling = false;
     InitializeComponent();
     this.container             = container;
     this.formOpener            = formOpener;
     this.backupGenerator       = backupGenerator;
     this.sqlConnectionProvider = sqlConnectionProvider;
 }
示例#18
0
 public MtTypeDefinition ResolveType(ISqlConnectionProvider connectionProvider, Type clrType, IMtTypeStorageProvider typeStorageProvider, bool storeIfNew)
 {
     return(ResolveMtType(connectionProvider, clrType, typeStorageProvider, false, storeIfNew));
 }
示例#19
0
 public CoinRepository(ISqlConnectionProvider sqlConnectionProvider)
     : base(sqlConnectionProvider, CoinTableName)
 {
 }
 public WorkDbReleaseRepository(ISqlConnectionProvider connectionProvider)
 {
     Contract.Requires(connectionProvider != null, "connectionProvider != null");
     _connectionProvider = connectionProvider;
 }
示例#21
0
 public SqlPushSubscriber(ISqlConnectionProvider sqlConnectionProvider)
 {
     this.sqlConnectionProvider = sqlConnectionProvider;
 }
示例#22
0
 public Guid?GetObjectId(ISqlConnectionProvider connectionProvider, string fr8AccountId, MtTypeDefinition type, AstNode where)
 {
     return(null);
 }
示例#23
0
 public InsertOrUpdateCommandHandler(ISqlConnectionProvider sqlProvider)
 {
     this.provider = sqlProvider;
 }
示例#24
0
 public static SqlConnection ToSqlConnection(this ISqlConnectionProvider provider) =>
 provider.GetSqlConnection().ToSqlConnection();
 public SqlUtilizationDataProvider(ISqlConnectionProvider connectionProvider)
 {
     _connectionProvider = connectionProvider;
 }
示例#26
0
 public StoredProceduresExecutor(ISqlConnectionProvider sqlConnectionProvider)
 {
     _sqlConnectionProvider = sqlConnectionProvider;
 }
示例#27
0
 public DatabaseBackupGenerator(ISqlConnectionProvider sqlConnectionInstance)
 {
     connectionStringSettings   = AppConfigReader.ObtenerInstancia();
     this.sqlConnectionInstance = sqlConnectionInstance;
 }
示例#28
0
 public static void RegisterConnectionProvider(ISqlConnectionProvider connectionProvider)
 {
     _connectionProvider = connectionProvider;
 }
示例#29
0
 public SqlServerDbAdapter(ISqlConnectionProvider sqlConnectionProvider)
 {
     _sqlConnectionProvider = sqlConnectionProvider;
 }
 public AuthResourceProvider(ISqlQueryBuilder <AuthResource> queryBuilder, ISqlConnectionProvider connectionProvider)
     : base(queryBuilder, connectionProvider)
 {
     _connectionProvider = connectionProvider;
     _queryBuilder       = queryBuilder;
 }
示例#31
0
 public SqlSecurityObjectsStorageProvider(ISqlConnectionProvider sqlConnectionProvider)
 {
     _sqlConnectionProvider = sqlConnectionProvider;
 }
 public static string GenerateClassFromQuery(this ISqlConnectionProvider sqlConnectionProvider, string sqlQuery,
                                             string className)
 {
     return(CSharpClassGeneratorFromQueryViaSqlDescribeResultSet.GenerateClass(
                sqlConnectionProvider, sqlQuery, className));
 }
 public ClientProvider(ISqlQueryBuilder <Client> queryBuilder, ISqlConnectionProvider connectionProvider)
     : base(queryBuilder, connectionProvider)
 {
     _connectionProvider = connectionProvider;
     _queryBuilder       = queryBuilder;
 }
示例#34
0
    public static void TruncateTable(this ISqlConnectionProvider sqlConnectionProvider, DbTableNameWithNullableSchema dbTableNameWithNullableSchema)
    {
        var truncateScript = $"TRUNCATE TABLE {dbTableNameWithNullableSchema.ToStringBrackets()}";

        sqlConnectionProvider.Execute(truncateScript);
    }
示例#35
0
 public void PersistType(ISqlConnectionProvider connectionProvider, MtTypeDefinition mtType)
 {
     _newTypes.Add(mtType);
 }
    public static async Task <IList <TableConstraintInfoDto> > GetAllTableConstraints(ISqlConnectionProvider scp)
    {
        var query  = TableConstraintInfoDto.SqlQuery;
        var result = scp.Query <TableConstraintInfoDto>(query).ToList();

        return(result);
    }
示例#37
0
    public static void TruncateTable(this ISqlConnectionProvider sqlConnectionProvider, string schema, string table)
    {
        var truncateScript = $"TRUNCATE TABLE {schema}.{table}";

        sqlConnectionProvider.Execute(truncateScript);
    }