Beispiel #1
0
 protected override void BuildCreateTableNullAttribute(SqlField field, DefaulNullable defaulNullable)
 {
     if (!field.Nullable)
     {
         StringBuilder.Append("NOT NULL");
     }
 }
Beispiel #2
0
            public static ITable <T> Query(IDataContext dataContext,
                                           string tableName, string databaseName, string schemaName,
                                           string statementHeader, string statementFooter,
                                           DefaulNullable defaulNullable)
            {
                var sqlTable = new SqlTable <T>(dataContext.MappingSchema);
                var sqlQuery = new SelectQuery {
                    QueryType = QueryType.CreateTable
                };

                if (tableName != null)
                {
                    sqlTable.PhysicalName = tableName;
                }
                if (databaseName != null)
                {
                    sqlTable.Database = databaseName;
                }
                if (schemaName != null)
                {
                    sqlTable.Owner = schemaName;
                }

                sqlQuery.CreateTable.Table           = sqlTable;
                sqlQuery.CreateTable.StatementHeader = statementHeader;
                sqlQuery.CreateTable.StatementFooter = statementFooter;
                sqlQuery.CreateTable.DefaulNullable  = defaulNullable;

                var query = new Query <int>(dataContext, null)
                {
                    Queries = { new QueryInfo {
                                    SelectQuery = sqlQuery,
                                } }
                };

                SetNonQueryQuery(query);

                query.GetElement(dataContext, Expression.Constant(null), null);

                ITable <T> table = new Table <T>(dataContext);

                if (tableName != null)
                {
                    table = table.TableName(tableName);
                }
                if (databaseName != null)
                {
                    table = table.DatabaseName(databaseName);
                }
                if (schemaName != null)
                {
                    table = table.SchemaName(schemaName);
                }

                return(table);
            }
        protected override void BuildCreateTableNullAttribute(SqlField field, DefaulNullable defaulNullable)
        {
            if (defaulNullable == DefaulNullable.Null && field.CanBeNull)
            {
                return;
            }

            if (defaulNullable == DefaulNullable.NotNull && !field.CanBeNull)
            {
                return;
            }

            StringBuilder.Append(field.CanBeNull ? " " : "NOT NULL");
        }
Beispiel #4
0
 public static ITable <T> CreateTable <T>([NotNull] this IDataContext dataContext,
                                          string tableName              = null,
                                          string databaseName           = null,
                                          string ownerName              = null,
                                          string statementHeader        = null,
                                          string statementFooter        = null,
                                          DefaulNullable defaulNullable = DefaulNullable.None)
 {
     if (dataContext == null)
     {
         throw new ArgumentNullException("dataContext");
     }
     return(Query <T> .CreateTable(DataContextInfo.Create(dataContext),
                                   tableName, databaseName, ownerName, statementHeader, statementFooter, defaulNullable));
 }
Beispiel #5
0
 /// <summary>
 /// Creates new table in database for mapping class <typeparamref name="T"/>.
 /// Information about table name, columns names and types is taken from mapping class.
 /// </summary>
 /// <typeparam name="T">Mapping class.</typeparam>
 /// <param name="dataContext">Database connection context.</param>
 /// <param name="tableName">Optional table name to override default table name, extracted from <typeparamref name="T"/> mapping.</param>
 /// <param name="databaseName">Optional database name, to override default database name. See <see cref="LinqExtensions.DatabaseName{T}(ITable{T}, string)"/> method for support information per provider.</param>
 /// <param name="schemaName">Optional schema/owner name, to override default name. See <see cref="LinqExtensions.SchemaName{T}(ITable{T}, string)"/> method for support information per provider.</param>
 /// <param name="statementHeader">Optional replacement for <c>"CREATE TABLE table_name"</c> header. Header is a template with <c>{0}</c> parameter for table name.</param>
 /// <param name="statementFooter">Optional SQL, appended to generated create table statement.</param>
 /// <param name="defaulNullable">Defines how columns nullability flag should be generated:
 /// <para> - <see cref="DefaulNullable.Null"/> - generate only <c>NOT NULL</c> for non-nullable fields. Missing nullability information treated as <c>NULL</c> by database.</para>
 /// <para> - <see cref="DefaulNullable.NotNull"/> - generate only <c>NULL</c> for nullable fields. Missing nullability information treated as <c>NOT NULL</c> by database.</para>
 /// <para> - <see cref="DefaulNullable.None"/> - explicitly generate <c>NULL</c> and <c>NOT NULL</c> for all columns.</para>
 /// Default value: <see cref="DefaulNullable.None"/>.
 /// </param>
 /// <returns>Created table as queryable source.</returns>
 public static ITable <T> CreateTable <T>([NotNull] this IDataContext dataContext,
                                          string tableName              = null,
                                          string databaseName           = null,
                                          string schemaName             = null,
                                          string statementHeader        = null,
                                          string statementFooter        = null,
                                          DefaulNullable defaulNullable = DefaulNullable.None)
 {
     if (dataContext == null)
     {
         throw new ArgumentNullException(nameof(dataContext));
     }
     return(QueryRunner.CreateTable <T> .Query(dataContext,
                                               tableName, databaseName, schemaName, statementHeader, statementFooter, defaulNullable));
 }
Beispiel #6
0
 /// <summary>
 /// Asynchronously creates new table in database for mapping class <typeparamref name="T"/>.
 /// Information about table name, columns names and types is taken from mapping class.
 /// </summary>
 /// <typeparam name="T">Mapping class.</typeparam>
 /// <param name="dataContext">Database connection context.</param>
 /// <param name="tableName">Optional table name to override default table name, extracted from <typeparamref name="T"/> mapping.</param>
 /// <param name="databaseName">Optional database name, to override default database name. See <see cref="LinqExtensions.DatabaseName{T}(ITable{T}, string)"/> method for support information per provider.</param>
 /// <param name="schemaName">Optional schema/owner name, to override default name. See <see cref="LinqExtensions.SchemaName{T}(ITable{T}, string)"/> method for support information per provider.</param>
 /// <param name="statementHeader">Optional replacement for <c>"CREATE TABLE table_name"</c> header. Header is a template with <c>{0}</c> parameter for table name.</param>
 /// <param name="statementFooter">Optional SQL, appended to generated create table statement.</param>
 /// <param name="defaulNullable">Defines how columns nullability flag should be generated:
 /// <para> - <see cref="DefaulNullable.Null"/> - generate only <c>NOT NULL</c> for non-nullable fields. Missing nullability information treated as <c>NULL</c> by database.</para>
 /// <para> - <see cref="DefaulNullable.NotNull"/> - generate only <c>NULL</c> for nullable fields. Missing nullability information treated as <c>NOT NULL</c> by database.</para>
 /// <para> - <see cref="DefaulNullable.None"/> - explicitly generate <c>NULL</c> and <c>NOT NULL</c> for all columns.</para>
 /// Default value: <see cref="DefaulNullable.None"/>.
 /// </param>
 /// <param name="token">Optional asynchronous operation cancellation token.</param>
 /// <returns>Created table as queryable source.</returns>
 public static Task <ITable <T> > CreateTableAsync <T>([NotNull] this IDataContext dataContext,
                                                       string tableName              = null,
                                                       string databaseName           = null,
                                                       string schemaName             = null,
                                                       string statementHeader        = null,
                                                       string statementFooter        = null,
                                                       DefaulNullable defaulNullable = DefaulNullable.None,
                                                       CancellationToken token       = default)
 {
     if (dataContext == null)
     {
         throw new ArgumentNullException(nameof(dataContext));
     }
     return(QueryRunner.CreateTable <T> .QueryAsync(dataContext,
                                                    tableName, databaseName, schemaName, statementHeader, statementFooter, defaulNullable, token));
 }
 protected override void BuildCreateTableNullAttribute(SqlField field, DefaulNullable defaulNullable)
 {
     if (!field.CanBeNull)
         StringBuilder.Append("NOT NULL");
 }
Beispiel #8
0
            public static async Task <ITable <T> > QueryAsync(IDataContext dataContext,
                                                              string tableName, string databaseName, string schemaName, string statementHeader,
                                                              string statementFooter, DefaulNullable defaulNullable,
                                                              CancellationToken token)
            {
                var sqlTable    = new SqlTable <T>(dataContext.MappingSchema);
                var createTable = new SqlCreateTableStatement();

                if (tableName != null)
                {
                    sqlTable.PhysicalName = tableName;
                }
                if (databaseName != null)
                {
                    sqlTable.Database = databaseName;
                }
                if (schemaName != null)
                {
                    sqlTable.Owner = schemaName;
                }

                createTable.Table           = sqlTable;
                createTable.StatementHeader = statementHeader;
                createTable.StatementFooter = statementFooter;
                createTable.DefaulNullable  = defaulNullable;

                var query = new Query <int>(dataContext, null)
                {
                    Queries = { new QueryInfo {
                                    Statement = createTable,
                                } }
                };

                SetNonQueryQuery(query);

                await query.GetElementAsync(dataContext, Expression.Constant(null), null, token);

                ITable <T> table = new Table <T>(dataContext);

                if (tableName != null)
                {
                    table = table.TableName(tableName);
                }
                if (databaseName != null)
                {
                    table = table.DatabaseName(databaseName);
                }
                if (schemaName != null)
                {
                    table = table.SchemaName(schemaName);
                }

                return(table);
            }