public void ColumnMigratorInfo_ShouldBeIgnored()
        {
            var member     = typeof(ColumnMigratorInfoTestModel).GetProperty(nameof(ColumnMigratorInfoTestModel.ShouldBeIgnored));
            var memberInfo = ColumnMigratorInfo.FromMemberInfo(member);

            Assert.IsNull(memberInfo);
        }
        public void ColumnMigratorInfo_ResultColumn()
        {
            var member     = typeof(ColumnMigratorInfoTestModel).GetProperty(nameof(ColumnMigratorInfoTestModel.Result));
            var memberInfo = ColumnMigratorInfo.FromMemberInfo(member);

            Assert.IsNull(memberInfo);
        }
        protected virtual string formatColumn(TableMigratorInfo table, ColumnMigratorInfo column)
        {
            var isPrimaryKeyKeywordInline = shouldFormatPrimaryKeyInlinse(table);

            var columnDbTypeString = formatColumnDataTypeString(column.Type, column.DbTypeParameter);
            var isPrimaryKey       = table.PrimaryKey?.Split(',')?.Contains(column.ColumnName, new StringComparer()) ?? false;

            StringBuilder builder = new StringBuilder(databaseType.EscapeSqlIdentifier(column.ColumnName));

            builder.Append(" ");
            builder.Append(columnDbTypeString);

            builder.Append(" ");
            builder.Append(column.AllowNull ? "NULL" : "NOT NULL");

            if (isPrimaryKey)
            {
                if (isPrimaryKeyKeywordInline)
                {
                    builder.Append(" PRIMARY KEY");
                }

                if (table.AutoIncrement)
                {
                    builder.Append(" ");
                    builder.Append(formatAutoIncrement());
                }
            }

            return(builder.ToString());
        }
        public void ColumnMigratorInfo_ShouldBeRenamed()
        {
            var member     = typeof(ColumnMigratorInfoTestModel).GetProperty(nameof(ColumnMigratorInfoTestModel.ShouldBeRenamed));
            var memberInfo = ColumnMigratorInfo.FromMemberInfo(member);

            Assert.IsNotNull(memberInfo);
            Assert.AreEqual("RenamedColumn", memberInfo.ColumnName);
        }
        public void ColumnMigratorInfo_ComputedColumn()
        {
            var member     = typeof(ColumnMigratorInfoTestModel).GetProperty(nameof(ColumnMigratorInfoTestModel.Computed));
            var memberInfo = ColumnMigratorInfo.FromMemberInfo(member);

            Assert.IsNotNull(memberInfo);
            Assert.AreEqual("Computed", memberInfo.ColumnName);
        }
        public ICreateTableColumnQueryProvider <T> AddColumn <TMember>(Expression <Func <T, TMember> > memberExpression)
        {
            var member = memberExpression.GetMember();
            var column = ColumnMigratorInfo.FromMemberInfo(member);

            AddColumn(column);
            return(this);
        }
        public void ColumnMigratorInfo_nullable_string()
        {
            var member     = typeof(ColumnMigratorInfoTestModel).GetProperty(nameof(ColumnMigratorInfoTestModel.NullableName));
            var memberInfo = ColumnMigratorInfo.FromMemberInfo(member);

            Assert.IsNotNull(memberInfo);
            Assert.AreEqual("NullableName", memberInfo.ColumnName);
            Assert.IsTrue(memberInfo.AllowNull);
            Assert.IsFalse(memberInfo.IsPrimaryKey);
            Assert.IsFalse(memberInfo.IsAutoIncrement);
        }
 protected virtual string formatColumn(ColumnMigratorInfo column)
 {
     return($"{databaseType.EscapeSqlIdentifier(column.ColumnName)} {formatColumnDataTypeString(column.Type, column.DbTypeParameter)}");
 }