public SqlBuilderTrackingTable(SyncTable tableDescription, ParserName tableName, ParserName trackingName, SyncSetup setup) { this.tableDescription = tableDescription; this.setup = setup; this.trackingName = trackingName; this.sqlDbMetadata = new SqlDbMetadata(); }
internal async Task <IEnumerable <SyncColumn> > GetColumnsAsync(DbConnection connection, DbTransaction transaction) { var schema = SqlManagementUtils.GetUnquotedSqlSchemaName(tableName); var columns = new List <SyncColumn>(); // Get the columns definition var syncTableColumnsList = await SqlManagementUtils.GetColumnsForTableAsync((SqlConnection)connection, (SqlTransaction)transaction, this.tableName.ToString(), schema).ConfigureAwait(false); var sqlDbMetadata = new SqlDbMetadata(); foreach (var c in syncTableColumnsList.Rows.OrderBy(r => (int)r["column_id"])) { var typeName = c["type"].ToString(); var name = c["name"].ToString(); var maxLengthLong = Convert.ToInt64(c["max_length"]); // Gets the datastore owner dbType var datastoreDbType = (SqlDbType)sqlDbMetadata.ValidateOwnerDbType(typeName, false, false, maxLengthLong); // once we have the datastore type, we can have the managed type var columnType = sqlDbMetadata.ValidateType(datastoreDbType); var sColumn = new SyncColumn(name, columnType); sColumn.OriginalDbType = datastoreDbType.ToString(); sColumn.Ordinal = (int)c["column_id"]; sColumn.OriginalTypeName = c["type"].ToString(); sColumn.MaxLength = maxLengthLong > int.MaxValue ? int.MaxValue : (int)maxLengthLong; sColumn.Precision = (byte)c["precision"]; sColumn.Scale = (byte)c["scale"]; sColumn.AllowDBNull = (bool)c["is_nullable"]; sColumn.IsAutoIncrement = (bool)c["is_identity"]; sColumn.IsUnique = c["is_unique"] != DBNull.Value ? (bool)c["is_unique"] : false; sColumn.IsCompute = (bool)c["is_computed"]; sColumn.DefaultValue = c["defaultvalue"] != DBNull.Value ? c["defaultvalue"].ToString() : null; if (sColumn.IsAutoIncrement) { sColumn.AutoIncrementSeed = Convert.ToInt32(c["seed"]); sColumn.AutoIncrementStep = Convert.ToInt32(c["step"]); } switch (sColumn.OriginalTypeName.ToLowerInvariant()) { case "nchar": case "nvarchar": sColumn.IsUnicode = true; break; default: sColumn.IsUnicode = false; break; } // No unsigned type in SQL Server sColumn.IsUnsigned = false; columns.Add(sColumn); } return(columns); }
public SqlBuilderTrackingTable(DmTable tableDescription, DbConnection connection, DbTransaction transaction = null) { this.connection = connection as SqlConnection; this.transaction = transaction as SqlTransaction; this.tableDescription = tableDescription; (this.tableName, this.trackingName) = SqlBuilder.GetParsers(this.tableDescription); this.sqlDbMetadata = new SqlDbMetadata(); }
public SqlBuilderTrackingTable(SyncTable tableDescription, ParserName tableName, ParserName trackingName, SyncSetup setup, DbConnection connection, DbTransaction transaction = null) { this.connection = connection as SqlConnection; this.transaction = transaction as SqlTransaction; this.tableDescription = tableDescription; this.setup = setup; this.tableName = tableName; this.trackingName = trackingName; this.sqlDbMetadata = new SqlDbMetadata(); }
public SqlChangeTrackingBuilderProcedure(SyncTable tableDescription, ParserName tableName, ParserName trackingName, SyncSetup setup) : base(tableDescription, tableName, trackingName, setup) { this.tableDescription = tableDescription; this.setup = setup; this.tableName = tableName; this.trackingName = trackingName; this.sqlObjectNames = new SqlObjectNames(this.tableDescription, tableName, trackingName, this.setup); this.sqlDbMetadata = new SqlDbMetadata(); }
public SqlChangeTrackingBuilderProcedure(SyncTable tableDescription, DbConnection connection, DbTransaction transaction = null) : base(tableDescription, connection, transaction) { this.connection = connection as SqlConnection; this.transaction = transaction as SqlTransaction; this.tableDescription = tableDescription; (this.tableName, this.trackingName) = SqlTableBuilder.GetParsers(tableDescription); this.sqlObjectNames = new SqlObjectNames(this.tableDescription); this.sqlDbMetadata = new SqlDbMetadata(); }
public SqlSyncAdapter(DmTable tableDescription, DbConnection connection, DbTransaction transaction) : base(tableDescription) { var sqlc = connection as SqlConnection; this.connection = sqlc ?? throw new InvalidCastException("Connection should be a SqlConnection"); this.transaction = transaction as SqlTransaction; this.sqlObjectNames = new SqlObjectNames(tableDescription); this.sqlMetadata = new SqlDbMetadata(); }
public SqlTableBuilder(SyncTable tableDescription, ParserName tableName, ParserName trackingTableName, SyncSetup setup, string scopeName) : base(tableDescription, tableName, trackingTableName, setup, scopeName) { this.SqlObjectNames = new SqlObjectNames(tableDescription, tableName, trackingTableName, setup, scopeName); this.SqlDbMetadata = new SqlDbMetadata(); this.sqlBuilderProcedure = new SqlBuilderProcedure(tableDescription, tableName, trackingTableName, Setup, scopeName); this.sqlBuilderTable = new SqlBuilderTable(tableDescription, tableName, trackingTableName, Setup); this.sqlBuilderTrackingTable = new SqlBuilderTrackingTable(tableDescription, tableName, trackingTableName, Setup); this.sqlBuilderTrigger = new SqlBuilderTrigger(tableDescription, tableName, trackingTableName, Setup, scopeName); }
public SqlSyncAdapter(SyncTable tableDescription, ParserName tableName, ParserName trackingName, SyncSetup setup, DbConnection connection, DbTransaction transaction) : base(tableDescription, setup) { var sqlc = connection as SqlConnection; this.connection = sqlc ?? throw new InvalidCastException("Connection should be a SqlConnection"); this.transaction = transaction as SqlTransaction; this.sqlObjectNames = new SqlObjectNames(tableDescription, tableName, trackingName, setup); this.sqlMetadata = new SqlDbMetadata(); }
public SqlChangeTrackingBuilderProcedure(SyncTable tableDescription, ParserName tableName, ParserName trackingName, SyncSetup setup, DbConnection connection, DbTransaction transaction = null) : base(tableDescription, tableName, trackingName, setup, connection, transaction) { this.connection = connection as SqlConnection; this.transaction = transaction as SqlTransaction; this.tableDescription = tableDescription; this.setup = setup; this.tableName = tableName; this.trackingName = trackingName; this.sqlObjectNames = new SqlObjectNames(this.tableDescription, tableName, trackingName, this.setup); this.sqlDbMetadata = new SqlDbMetadata(); }
public SqlSyncAdapter(SyncTable tableDescription, ParserName tableName, ParserName trackingName, SyncSetup setup) : base(tableDescription, setup) { this.sqlObjectNames = new SqlObjectNames(tableDescription, tableName, trackingName, setup); this.sqlMetadata = new SqlDbMetadata(); }