2

What´s the right way to create a TEXT (MYSQL) or CLOB(ORACLE/SQLSERVER) using a Migration script?

I mean something like: Alter.Column("column").OnTable("table").AsXXX

4

1 回答 1

0

类似问题的答案:我可以使用 FluentMigrator 创建一列 nvarchar(MAX) 吗? 这个想法是使用 FluentMigrator 上的扩展来添加一种处理“类似 clob”的数据类型的方法。在示例解决方案中,扩展使用 aasString(int.MaxValue)但如果您打算使用每个数据库的特定文本类型(示例如下扩展 FluentMigrator,因此您可以在更改列迁移上使用 clob 类型,而不是允许您在链接解决方案中使用它创建列):

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();

不是最优雅的解决方案,因为它需要您承担迁移者驱动程序的工作并手动确定文本类型,但它可以工作。

于 2015-06-24T19:09:34.683 回答