Если вы часто создаете столбцы / таблицы с одинаковыми настройками или группами столбцов, вы должны создавать методы расширения для своих миграций!
Например, почти в каждой из моих таблиц есть столбцы CreatedAt и updatedAt DateTime., поэтому я выбрал небольшой метод расширения, чтобы я мог сказать:
Create.Table("Foos").
WithColumn("a").
WithTimestamps();
Я думаю Я правильно создал метод Расширения ... Я знаю, что он работает, но FluentMigrator имеет LOT интерфейсов ... вот оно:
public static class MigrationExtensions {
public static ICreateTableWithColumnSyntax WithTimestamps(this ICreateTableWithColumnSyntax root) {
return root.
WithColumn("CreatedAt").AsDateTime().NotNullable().
WithColumn("UpdatedAt").AsDateTime().NotNullable();
}
}
Аналогично, почти у каждой из моих таблиц есть первичный ключ int, называемый 'Id', поэтому я думаю, что собираюсьдобавьте Table.CreateWithId("Foos")
, чтобы всегда добавлять этот Id для меня.Не уверен ... На самом деле я только начал использовать FluentMigrator сегодня, но вы всегда должны проводить рефакторинг, когда это возможно!
ПРИМЕЧАНИЕ: Если вы делаете вспомогательные методы / методы расширения для своих миграций, вам следует никогда когда-либо когда-либо изменить то, что эти методы делают.Если вы это сделаете, кто-то может попытаться запустить ваши миграции, и все может взорваться, потому что вспомогательные методы, которые вы использовали для создания Миграции # 1, теперь работают иначе, чем раньше.
Вот код для создания столбцов, если он помогаетсоздать вспомогательные методы: https://github.com/schambers/fluentmigrator/blob/master/src/FluentMigrator/Builders/Create/Column/CreateColumnExpressionBuilder.cs