FluentMigrator Создать Clob/текст

Как правильно создать TEXT (MYSQL) или CLOB (ORACLE/SQLSERVER) с помощью сценария миграции?

Я имею в виду что-то вроде: Alter.Column("column").OnTable("table").AsXXX


person Luiz Henrique Martins Lins Rol    schedule 08.01.2014    source источник


Ответы (1)


Ответ на аналогичный вопрос: Могу ли я создать столбец 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();

не самое элегантное решение, потому что оно требует, чтобы вы взяли на себя работу драйвера миграции и определили тип текста вручную, но оно работает.

person rodrigo.botti    schedule 24.06.2015