2010-03-23 15 views

Odpowiedz

55

Można utworzyć metodę rozszerzenia do zawijania .AsString (Int32.MaxValue) w ciągu .AsMaxString()

na przykład

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

OK, znalazłem to. Zasadniczo, użyj .AsString (Int32.MaxValue). Szkoda, że ​​nie jest to metoda .AsMaxString(), ale myślę, że to dość łatwe do umieszczenia w ...

4

Jeśli często tworzysz kolumny/tabele z tymi samymi ustawieniami lub grupami kolumn, powinieneś tworzyć metody rozszerzenia dla swoich migracji!

Na przykład, prawie każdy z moich tabel ma CreatedAt i UpdatedAt DateTime kolumny, więc bita trochę metodę rozszerzenia, więc mogę powiedzieć:

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

myślę I stworzył metodę rozszerzenia poprawnie ... wiem, że to działa, ale FluentMigrator ma LOT interfejsów ... tutaj jest:

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

Podobnie, prawie każdy z moich tabel ma int klucz podstawowy o nazwie "Id", więc myślę, że zamierzam dodać Table.CreateWithId("Foos"), aby zawsze dodawać dla mnie ten identyfikator. Nie jestem pewien ... Właśnie zacząłem używać FluentMigrator dzisiaj, ale zawsze powinieneś być refaktoryzacji, kiedy to możliwe!

UWAGA: Jeśli robią metod pomocnik/przedłużających dla migracji, należy nigdykiedykolwiekkiedykolwiek zmiana co te metody zrobić. Jeśli to zrobisz, ktoś może spróbować uruchomić twoje migracje i rzeczy mogą eksplodować, ponieważ metody pomocnicze użyte do utworzenia migracji nr 1 działają teraz inaczej niż wcześniej.

Oto kod do tworzenia kolumn okrywać pomaga utworzyć metody pomocnika: https://github.com/schambers/fluentmigrator/blob/master/src/FluentMigrator/Builders/Create/Column/CreateColumnExpressionBuilder.cs

15

można użyć AsCustom("nvarchar(max)") i zapakować go do przedłużenia

Powiązane problemy