使用FluentMigrator,默认创建Column使用.AsString()结果nvarchar(255).有一种简单的方法(在我修改FluentMigrator代码之前)创建一个类型的列nvarchar(MAX)吗?
Jon*_*ill 69
您可以创建一个扩展方法来包装.AsMaxString()中的.AsString(Int32.MaxValue)
例如
internal static class MigratorExtensions
{
public static ICreateTableColumnOptionOrWithColumnSyntax AsMaxString(this ICreateTableColumnAsTypeSyntax createTableColumnAsTypeSyntax)
{
return createTableColumnAsTypeSyntax.AsString(int.MaxValue);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 8
如果您经常使用相同的设置或列组创建列/表,则应该为迁移创建扩展方法!
例如,我的几乎每一个表都有CreatedAt和UpdatedAt DateTime列,所以我提出了一个小扩展方法,所以我可以说:
Create.Table("Foos").
WithColumn("a").
WithTimestamps();
Run Code Online (Sandbox Code Playgroud)
我想我正确地创建了Extension方法......我知道它有效,但是FluentMigrator有很多接口......这里是:
public static class MigrationExtensions {
public static ICreateTableWithColumnSyntax WithTimestamps(this ICreateTableWithColumnSyntax root) {
return root.
WithColumn("CreatedAt").AsDateTime().NotNullable().
WithColumn("UpdatedAt").AsDateTime().NotNullable();
}
}
Run Code Online (Sandbox Code Playgroud)
同样,我的几乎每一个表都有一个名为'Id'的int主键,所以我想我要添加Table.CreateWithId("Foos")以便总是为我添加该ID.不确定......我实际上刚刚开始使用FluentMigrator,但是你应该尽可能地重构!
注意:如果你做帮手/扩展方法为你的迁移,你应该永远 永远 永远改变什么这些方法做.如果你这样做,有人可能会尝试运行你的迁移,事情可能会爆炸,因为你用来创建Migration#1的辅助方法现在的工作方式与之前不同.
下面是创建列的代码,它可以帮助您创建帮助方法:https://github.com/schambers/fluentmigrator/blob/master/src/FluentMigrator/Builders/Create/Column/CreateColumnExpressionBuilder.cs
| 归档时间: |
|
| 查看次数: |
13352 次 |
| 最近记录: |