2010-03-23 55 views

回答

55

您可以創建一個擴展方法中.AsMaxString()

包裹.AsString(Int32.MaxValue)例如

internal static class MigratorExtensions 
{ 
    public static ICreateTableColumnOptionOrWithColumnSyntax AsMaxString(this ICreateTableColumnAsTypeSyntax createTableColumnAsTypeSyntax) 
    { 
     return createTableColumnAsTypeSyntax.AsString(int.MaxValue); 
    } 
} 
20

好的,我找到了。基本上,使用.AsString(Int32.MaxValue)。可惜有沒有一個.AsMaxString()方法,但我想它很容易就擺在...

4

如果您經常創建具有相同設置或列組的列/表,您應該爲您的遷移創建擴展方法!

例如,我的表的幾乎每個人都有CreatedAt和UpdatedAt日期時間列,所以我掀起了一個小擴展方法,所以我可以說:

Create.Table("Foos"). 
    WithColumn("a"). 
    WithTimestamps(); 

認爲我創建的擴展方法正確...我知道它的工作原理,但FluentMigrator具有的接口LOT ...這裏是:

public static class MigrationExtensions { 
    public static ICreateTableWithColumnSyntax WithTimestamps(this ICreateTableWithColumnSyntax root) { 
     return root. 
      WithColumn("CreatedAt").AsDateTime().NotNullable(). 
      WithColumn("UpdatedAt").AsDateTime().NotNullable(); 
    } 
} 

同樣,幾乎每一個我的表有一個int主鍵叫'Id',所以我想我會加​​來爲我加上那個Id。不確定...我今天剛剛開始使用FluentMigrator,但您應該始終在可能的情況下重構!

注:如果你做幫手/擴展方法爲你的遷移,你應該永遠永遠不斷改變什麼這些方法做。如果你這樣做,有人可以嘗試運行你的遷移,並且事情可能會爆炸,因爲你用來創建遷移#1的幫助器方法現在的工作方式與之前的不同。

以下是創建列櫃面它可以幫助你的代碼創建的helper方法:https://github.com/schambers/fluentmigrator/blob/master/src/FluentMigrator/Builders/Create/Column/CreateColumnExpressionBuilder.cs

15

您可以使用AsCustom("nvarchar(max)")和它馱擴展

相關問題