Question

Utilisation FluentMigrator , la création par défaut d'un Column en utilisant les résultats de .AsString() dans un nvarchar(255). Est-il un moyen simple (avant de modifier le code FluentMigrator) pour créer une colonne de type nvarchar(MAX)?

Était-ce utile?

La solution

Vous pouvez créer une méthode d'extension pour envelopper .AsString (Int32.MaxValue) dans .AsMaxString ()

par exemple.

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

Autres conseils

OK, je l'ai trouvé. Fondamentalement, utilisez .AsString (Int32.MaxValue). Dommage qu'il n'y a pas une méthode .AsMaxString (), mais je suppose qu'il est assez facile à mettre en ...

Vous pouvez utiliser AsCustom("nvarchar(max)") et de l'emballage à l'extension

Si vous créez souvent des colonnes / tables avec les mêmes paramètres ou groupes de colonnes, vous devez créer des méthodes d'extension pour vos migrations!

Par exemple, presque chacun de mes tableaux a colonnes CreatedAt et UpdatedAt DateTime, donc je fouetté un peu méthode d'extension, je peux dire:

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

pense J'ai créé la méthode d'extension correctement ... Je sais que cela fonctionne, mais FluentMigrator a une LOT d'interfaces ... la voici:

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

De même, presque tous de mes tables possède une clé primaire int appelé « id », donc je pense que je vais ajouter Table.CreateWithId("Foos") ajouter toujours Id pour moi. Je ne sais pas ... Je fait juste commencé à utiliser FluentMigrator aujourd'hui, mais vous devriez toujours être refactoring si possible!

Remarque: Si vous faites des méthodes auxiliaires / extension pour votre migration, vous devriez jamais jamais jamais changer ce que ces méthodes font. Si vous le faites, quelqu'un pourrait essayer d'exécuter vos migrations et les choses pourraient exploser parce que les méthodes d'assistance que vous avez utilisé pour créer la migration # 1 fonctionne différemment maintenant qu'ils ne le faisaient auparavant.

Voici le code pour créer des colonnes Incase il vous aide à créer des méthodes d'aide: https://github.com/schambers/fluentmigrator/blob/master/src/FluentMigrator/Builders/Create/Column/CreateColumnExpressionBuilder.cs

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top