使用迁移脚本创建TEXT(MYSQL)或CLOB(ORACLE / SQLSERVER)的正确方法是什么?
我的意思是:Alter.Column(“column”)。OnTable(“table”)。AsXXX
答案 0 :(得分:0)
对类似问题的回答:Can I create a column of nvarchar(MAX) using FluentMigrator?
我们的想法是在FluentMigrator上使用扩展来添加一个处理"类似于"的方法。数据类型。在示例解决方案中,扩展使用asString(int.MaxValue)
,但是如果您打算使用每个数据库的特定文本类型(示例下面扩展FluentMigrator,那么您可以在 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();
不是最优雅的解决方案,因为它要求您接受迁移者的驱动程序的工作并手动确定文本类型但它可以正常工作。