Domanda

FluentMigrator , la creazione di default di un Column utilizzando i risultati .AsString() in un nvarchar(255). C'è un modo semplice (prima modifico il codice FluentMigrator) per creare una colonna di tipo nvarchar(MAX)?

È stato utile?

Soluzione

È possibile creare un metodo di estensione per avvolgere .AsString (Int32.MaxValue) entro .AsMaxString ()

per es.

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

Altri suggerimenti

OK, ho trovato. Fondamentalmente, utilizzare .AsString (Int32.MaxValue). Peccato non ci sia un metodo .AsMaxString (), ma credo che sia abbastanza facile da mettere in ...

È possibile utilizzare AsCustom("nvarchar(max)") e confezionarle per estensione

Se si crea spesso colonne / tavoli con le stesse impostazioni o gruppi di colonne, si dovrebbe essere la creazione di metodi di estensione per le migrazioni!

Per esempio, quasi ogni uno dei miei tavoli ha CreatedAt e UpdatedAt DateTime colonne, così ho montata su un po 'di metodo di estensione in modo che posso dire:

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

I pensare ho creato il metodo di estensione correttamente ... so che funziona, ma FluentMigrator ha un LOT di interfacce ... qui è:

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

Allo stesso modo, quasi ogni uno dei miei tavoli ha una chiave primaria int chiamato 'Id', quindi penso che ho intenzione di aggiungere Table.CreateWithId("Foos") aggiungere sempre che Id per me. Non sono sicuro ... Io in realtà appena iniziato a utilizzare FluentMigrator oggi, ma si dovrebbe sempre essere refactoring quando possibile!

Nota: Se fate metodi di aiuto / estensione per le migrazioni, è necessario non mai mai cambiare ciò che questi metodi fanno. Se lo fai, qualcuno potrebbe provare a eseguire i vostri migrazioni e le cose potrebbe esplodere a causa dei metodi di supporto che si usati per creare migrazione # 1 funziona in modo diverso ora che hanno fatto in precedenza.

Ecco il codice per la creazione di colonne in caso essa consente di creare metodi di supporto: https://github.com/schambers/fluentmigrator/blob/master/src/FluentMigrator/Builders/Create/Column/CreateColumnExpressionBuilder.cs

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top