Pregunta

FluentMigrator , la creación de un defecto Column utilizando los resultados .AsString() en un nvarchar(255). ¿Hay una manera sencilla (antes de modificar el código FluentMigrator) para crear una columna de tipo nvarchar(MAX)?

¿Fue útil?

Solución

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

por ejemplo.

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

Otros consejos

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

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

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 cuadros 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();

pensar creé el método de extensión correctamente ... Yo sé que funciona, pero FluentMigrator tiene un 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 uno de mis cuadros tiene una clave principal int llamada 'Id', así que creo que voy a añadir a Table.CreateWithId("Foos") siempre añadir que Id para mí. No estoy seguro ... De hecho, me acaba de empezar a usar FluentMigrator hoy, pero siempre se debe tener refactorización cuando sea posible!

Nota: Si comete métodos helper / extensión para sus migraciones, que debiera no nunca jamás cambian lo hacen esos métodos. Si lo hace, alguien podría intentar ejecutar sus migraciones y cosas puede explotar debido a que los métodos de ayuda que utilizó para crear la migración # 1 funciona de forma diferente ahora de lo que lo hacían 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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top