2010-03-23 21 views

Respuesta

55

Se puede crear un método de extensión para envolver .AsString (Int32.MaxValue) dentro .AsMaxString()

p.ej

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

OK, lo encontré. Básicamente, use .AsString (Int32.MaxValue). Es una pena que no es un método .AsMaxString(), pero supongo que es bastante fácil de poner en ...

4

Si a menudo crea columnas/tablas con los mismos ajustes o grupos de columnas, que debe ser la creación de métodos de extensión para sus migraciones!

Por ejemplo, casi cada uno de mis tablas tiene columnas CreatedAt y UpdatedAt fecha y hora, así que nos prepararon rápidamente un poco de método de extensión por lo que puedo decir:

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

I piensan creé el método de extensión correctamente ... yo sé que funciona, pero tiene un FluentMigrator LOT de interfaces ... aquí está:

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

del mismo modo, casi cada una de mis tablas tiene un int la clave principal se llama 'Id', así que creo que voy a agregar Table.CreateWithId("Foos") para que siempre agregue ese ID por mí. No estoy seguro ... De hecho, en realidad comencé a usar FluentMigrator hoy, pero siempre debería estar refactorizando cuando sea posible.

NOTA: Si comete métodos helper/extensión para sus migraciones, debe Nuncanunca jamás cambio de lo que esos métodos de hacer. Si lo hace, alguien podría intentar ejecutar sus migraciones y las cosas podrían explotar porque los métodos de ayuda que utilizó para crear la Migración # 1 funcionan de manera diferente ahora que antes.

Este es el código para crear columnas en caso que le ayuda a crear métodos de ayuda: https://github.com/schambers/fluentmigrator/blob/master/src/FluentMigrator/Builders/Create/Column/CreateColumnExpressionBuilder.cs

15

Puede utilizar AsCustom("nvarchar(max)") y el paquete de extensión

Cuestiones relacionadas