Avec FluentMigrator (http://code.google.com/p/fluentmigrator/), la création par défaut d'une colonne à l'aide de .AsString () donne un nvarchar (255). Existe-t-il un moyen simple (avant de modifier le code FluentMigrator) de créer une colonne de type nvarchar (MAX)?
Réponses
Trop de publicités?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);
}
}
Si vous créez souvent des colonnes, tableaux, avec les mêmes paramètres ou groupes de colonnes, vous devez créer les méthodes d'extension pour votre migrations!
Par exemple, presque tous l'un de mes tableaux a CreatedAt et UpdatedAt colonnes DateTime, donc j'ai préparé un peu de méthode d'extension donc je peux dire que:
Create.Table("Foos").
WithColumn("a").
WithTimestamps();
Je pense que j'ai créé la méthode d'Extension correctement ... je sais que ça fonctionne, mais FluentMigrator a BEAUCOUP d'interfaces ... ici, il est:
public static class MigrationExtensions {
public static ICreateTableWithColumnSyntax WithTimestamps(this ICreateTableWithColumnSyntax root) {
return root.
WithColumn("CreatedAt").AsDateTime().NotNullable().
WithColumn("UpdatedAt").AsDateTime().NotNullable();
}
}
De même, près de chacun de mes tableaux est un int primary key appelé 'Id', donc je pense que je vais ajouter Table.CreateWithId("Foos")
d'ajouter toujours d'identification que pour moi. Je ne sais pas ... en fait je viens de commencé à utiliser FluentMigrator aujourd'hui, mais vous devriez toujours être refactoring quand c'est possible!
REMARQUE: Si vous faites helper/méthodes d'extension pour votre migrations, vous devriez jamais jamais, jamais changer ce que ces méthodes ne. Si vous le faites, quelqu'un pourrait essayer de lancer votre 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 l'ont fait plus tôt.
Voici le code pour créer des colonnes au cas où cela vous aide à créer des méthodes d'assistance: https://github.com/schambers/fluentmigrator/blob/master/src/FluentMigrator/Builders/Create/Column/CreateColumnExpressionBuilder.cs