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
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
类似问题的答案:我可以使用 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();
不是最优雅的解决方案,因为它需要您承担迁移者驱动程序的工作并手动确定文本类型,但它可以工作。