Я хочу добавить метод расширения для 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(), который добавит столбцы и внешние ключи.