Пример #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Column"/> class.
        /// </summary>
        /// <param name="columnName">The column name.</param>
        /// <param name="typeDefinition">The type definition.</param>
        /// <param name="nullable">If set to <c>true</c> indicates the column is nullable.</param>
        /// <param name="autoIncrement">If set to <c>true</c> the column automatically increments.</param>
        /// <param name="collation">The column collation.</param>
        /// <param name="defaultValue">The default value.</param>
        /// <param name="computedDefinition">The computed definition.</param>
        /// <param name="computedColumnType">The computed column type.</param>
        /// <exception cref="ArgumentNullException"><paramref name="columnName"/> is <c>null</c>, empty or whitespace.</exception>
        /// <exception cref="ArgumentException"><paramref name="collation"/> or <paramref name="computedColumnType"/> are invalid enum values.</exception>
        public Column(
            string columnName,
            IEnumerable <Token <SqliteToken> > typeDefinition,
            bool nullable,
            bool autoIncrement,
            SqliteCollation collation,
            IEnumerable <Token <SqliteToken> > defaultValue,
            IEnumerable <Token <SqliteToken> > computedDefinition,
            SqliteGeneratedColumnType computedColumnType
            )
        {
            if (columnName.IsNullOrWhiteSpace())
            {
                throw new ArgumentNullException(nameof(columnName));
            }
            if (!collation.IsValid())
            {
                throw new ArgumentException($"The { nameof(SqliteCollation) } provided must be a valid enum.", nameof(collation));
            }
            if (!computedColumnType.IsValid())
            {
                throw new ArgumentException($"The { nameof(SqliteGeneratedColumnType) } provided must be a valid enum.", nameof(computedColumnType));
            }

            Name               = columnName;
            TypeDefinition     = typeDefinition?.ToList() ?? Enumerable.Empty <Token <SqliteToken> >();
            Nullable           = nullable;
            IsAutoIncrement    = autoIncrement;
            Collation          = collation;
            DefaultValue       = defaultValue?.ToList() ?? Enumerable.Empty <Token <SqliteToken> >();
            ComputedDefinition = computedDefinition?.ToList() ?? Enumerable.Empty <Token <SqliteToken> >();
            ComputedColumnType = computedColumnType;
        }
Пример #2
0
            public GeneratedAlways(SqlExpression definition, SqliteGeneratedColumnType generatedColumnType)
                : base(ColumnConstraintType.GeneratedAlways)
            {
                if (definition == null || definition.Tokens.Empty())
                {
                    throw new ArgumentNullException(nameof(definition));
                }

                Definition          = definition.Tokens.ToList();
                GeneratedColumnType = generatedColumnType;
            }