Fluent migrator расширяет withColumns

Я хочу добавить метод расширения для Fluent migrator, чтобы иметь что-то вроде WithAuditColumns.

Мне удалось добавить метод CreateTableWithAuditColumns. Где я могу использовать его как

this.CreateTableWithAuditColumns("MyTablename", table => 
                table.WithColumn("Id").AsInt32().NotNullable());

Метод расширения,

public static IFluentSyntax CreateTableWithAuditColumns(this MigrationBase self, string tableName, Func<ICreateTableWithColumnOrSchemaOrDescriptionSyntax, IFluentSyntax> constructTableFunction, string schemaName = "dbo")
{
    if (!self.Schema.Schema(schemaName).Table(tableName).Exists())
    {
        var newTable = self.Create.Table(tableName).WithColumn("DateCreated").AsDateTime().Nullable()
                        .WithColumn("DateModified").AsDateTime().Nullable()
                        .WithColumn("CreatedBy").AsInt32().Nullable()
                        .WithColumn("ModifiedBy").AsInt32().Nullable();

        self.Create.ForeignKey() 
            .FromTable("User").ForeignColumn("UserId")
            .ToTable(tableName).PrimaryColumn("CreatedBy");

        self.Create.ForeignKey()
            .FromTable("User").ForeignColumn("UserId")
            .ToTable(tableName).PrimaryColumn("ModifiedBy");

        return newTable;
    }
    else
    {
        return null;
    }
}

Я пытаюсь найти способ сделать это, например Create.Table("MyTable").WithAuditColumns(), который добавит столбцы и внешние ключи.


person Dhanuka777    schedule 10.04.2019    source источник


Ответы (1)


Нашел способ, но он не поддерживает создание FKies

 public static ICreateTableWithColumnSyntax WithAuditColumns(this ICreateTableWithColumnSyntax table)
            {
                var tt = table.WithColumn("DateCreated").AsDateTime().Nullable()
                    .WithColumn("DateModified").AsDateTime().Nullable()
                    .WithColumn("CreatedBy").AsInt32().Nullable()
                    .WithColumn("ModifiedBy").AsInt32().Nullable();

                //table.Create.ForeignKey()
                //    .FromTable("User").ForeignColumn("UserId")
                //    .ToTable(tableName).PrimaryColumn("CreatedBy");

                //table.Create.ForeignKey()
                //    .FromTable("User").ForeignColumn("UserId")
                //    .ToTable(tableName).PrimaryColumn("ModifiedBy");

                return tt;
            }
person Dhanuka777    schedule 10.04.2019