private async Task <TableInfo> CreateTableInfo(IContext context) { var tableName = await context.ResolveTableNameAsync(TableName); var idColumnCount = Columns.Count(x => x.IsIdentity); if (idColumnCount > 1) { throw new InvalidOperationException("More than one IDENTITY column specified."); } bool ignoreCase = context.IgnoreCase(); var columnChecker = new TableColumnChecker(Columns, ignoreCase); var tableInfo = new TableInfo(tableName); foreach (var column in Columns) { var columnInfo = CreateColumnInfo(context, tableName.Name, column, columnChecker); if (column.IsIdentity) { columnInfo.DefaultValue = SqlExpression.Function("UNIQUEKEY", SqlExpression.Constant(tableName.ToString())); } tableInfo.Columns.Add(columnInfo); } return(tableInfo); }
private TableInfo CreateTableInfo(IRequest context) { var tableName = context.Access().ResolveTableName(TableName); var idColumnCount = Columns.Count(x => x.IsIdentity); if (idColumnCount > 1) { throw new InvalidOperationException("More than one IDENTITY column specified."); } bool ignoreCase = context.Query.IgnoreIdentifiersCase(); var columnChecker = new TableColumnChecker(Columns, ignoreCase); var tableInfo = new TableInfo(tableName); foreach (var column in Columns) { var columnInfo = CreateColumnInfo(context, tableName.Name, column, columnChecker); if (column.IsIdentity) { columnInfo.DefaultExpression = SqlExpression.FunctionCall("UNIQUEKEY", new SqlExpression[] { SqlExpression.Constant(tableName.ToString()) }); } tableInfo.AddColumn(columnInfo); } return(tableInfo); }
private TableInfo CreateTableInfo(IRequest context) { var tableName = context.Query.ResolveTableName(TableName); var idColumnCount = Columns.Count(x => x.IsIdentity); if (idColumnCount > 1) { throw new InvalidOperationException("More than one IDENTITY column specified."); } bool ignoreCase = context.Query.IgnoreIdentifiersCase(); var columnChecker = new TableColumnChecker(Columns, ignoreCase); var tableInfo = new TableInfo(tableName); foreach (var column in Columns) { var columnInfo = CreateColumnInfo(tableName.Name, column, columnChecker); tableInfo.AddColumn(columnInfo); } return(tableInfo); }
private ColumnInfo CreateColumnInfo(string tableName, SqlTableColumn column, TableColumnChecker columnChecker) { var expression = column.DefaultExpression; if (column.IsIdentity && expression != null) { throw new InvalidOperationException(String.Format("Identity column '{0}' cannot define a DEFAULT expression.", column.ColumnName)); } if (expression != null) { expression = columnChecker.CheckExpression(expression); } var columnName = columnChecker.StripTableName(tableName, column.ColumnName); return(new ColumnInfo(columnName, column.ColumnType) { DefaultExpression = expression, IsNotNull = column.IsNotNull }); }
private ColumnInfo CreateColumnInfo(string tableName, SqlTableColumn column, TableColumnChecker columnChecker) { var expression = column.DefaultExpression; if (column.IsIdentity && expression != null) throw new InvalidOperationException(String.Format("Identity column '{0}' cannot define a DEFAULT expression.", column.ColumnName)); if (expression != null) expression = columnChecker.CheckExpression(expression); var columnName = columnChecker.StripTableName(tableName, column.ColumnName); return new ColumnInfo(columnName, column.ColumnType) { DefaultExpression = expression, IsNotNull = column.IsNotNull }; }
private TableInfo CreateTableInfo(IRequest context) { var tableName = context.Query.ResolveTableName(TableName); var idColumnCount = Columns.Count(x => x.IsIdentity); if (idColumnCount > 1) throw new InvalidOperationException("More than one IDENTITY column specified."); bool ignoreCase = context.Query.IgnoreIdentifiersCase(); var columnChecker = new TableColumnChecker(Columns, ignoreCase); var tableInfo = new TableInfo(tableName); foreach (var column in Columns) { var columnInfo = CreateColumnInfo(tableName.Name, column, columnChecker); tableInfo.AddColumn(columnInfo); } return tableInfo; }
private ColumnInfo CreateColumnInfo(IContext context, string tableName, SqlTableColumn column, TableColumnChecker columnChecker) { var expression = column.DefaultExpression; if (column.IsIdentity && expression != null) { throw new InvalidOperationException($"Identity column '{column.ColumnName}' cannot define a DEFAULT expression."); } if (expression != null) { expression = columnChecker.CheckExpression(expression); } var columnName = columnChecker.StripTableName(tableName, column.ColumnName); // TODO: support for dynamic types such as #ROW ? var columnType = column.ColumnType; return(new ColumnInfo(columnName, columnType, expression)); }
private TableInfo CreateTableInfo(IRequest context) { var tableName = context.Access().ResolveTableName(TableName); var idColumnCount = Columns.Count(x => x.IsIdentity); if (idColumnCount > 1) throw new InvalidOperationException("More than one IDENTITY column specified."); bool ignoreCase = context.Query.IgnoreIdentifiersCase(); var columnChecker = new TableColumnChecker(Columns, ignoreCase); var tableInfo = new TableInfo(tableName); foreach (var column in Columns) { var columnInfo = CreateColumnInfo(context, tableName.Name, column, columnChecker); if (column.IsIdentity) columnInfo.DefaultExpression = SqlExpression.FunctionCall("UNIQUEKEY", new SqlExpression[] { SqlExpression.Constant(tableName.ToString()) }); tableInfo.AddColumn(columnInfo); } return tableInfo; }