Как правильно создать TEXT (MYSQL) или CLOB (ORACLE/SQLSERVER) с помощью сценария миграции?
Я имею в виду что-то вроде: Alter.Column("column").OnTable("table").AsXXX
Как правильно создать TEXT (MYSQL) или CLOB (ORACLE/SQLSERVER) с помощью сценария миграции?
Я имею в виду что-то вроде: Alter.Column("column").OnTable("table").AsXXX
Ответ на аналогичный вопрос: Могу ли я создать столбец nvarchar(MAX) с использованием FluentMigrator? Идея состоит в том, чтобы использовать расширение FluentMigrator, чтобы добавить метод для обработки типов данных типа "clob". В примере решения расширение использует asString(int.MaxValue)
, но если вы собираетесь использовать конкретный текстовый тип каждой базы данных (пример ниже расширяет FluentMigrator, поэтому вы можете использовать тип clob при миграции alter column в отличие от связанного решения что позволяет использовать его в столбце создания):
public static IAlterColumnOptionSyntax AsClob(this IAlterColumnAsTypeOrInSchemaSyntax alterColumnAsTypeOrInSchemaSyntax) {
var currentDB = ... // get from some config
var clobType = null;
switch(currentDB){
case MYSQL:
clobType = "LONGTEXT";
break;
case ORACLE:
clobType = "CLOB";
break;
... // so on and so forth
}
return alterColumnAsTypeOrInSchemaSyntax.asCustom(clobType);
}
а затем вы можете использовать его как:
Alter.Column("column").OnTable("table").AsClob();
не самое элегантное решение, потому что оно требует, чтобы вы взяли на себя работу драйвера миграции и определили тип текста вручную, но оно работает.