Pergunta

Usando Fluentmigrator, a criação padrão de um Column usando .AsString() resulta em um nvarchar(255). Existe uma maneira simples (antes de modificar o código Fluentmigrator) para criar uma coluna do tipo nvarchar(MAX)?

Foi útil?

Solução

Você pode criar um método de extensão para embrulhar .Assring (int32.MaxValue) dentro de .asmaxString ()

por exemplo

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

Outras dicas

Ok, eu encontrei. Basicamente, use .Asstring (int32.MaxValue). Pena que não existe um método .asmaxString (), mas acho que é fácil o suficiente para colocar ...

Você pode usar AsCustom("nvarchar(max)") e empacote -o para a extensão

Se você costuma criar colunas/tabelas com as mesmas configurações ou grupos de colunas, você deve criar métodos de extensão para suas migrações!

Por exemplo, quase todas as minhas tabelas criaram e atualizou as colunas DateTime, então eu criei um pequeno método de extensão para que eu possa dizer:

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

EU acho Eu criei o método de extensão corretamente ... eu sei que funciona, mas o Fluentmigrator tem um MUITO de interfaces ... aqui está:

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

Da mesma forma, quase todas as minhas mesas têm uma chave primária int chamada 'id', então acho que vou adicionar Table.CreateWithId("Foos") para sempre adicionar esse ID para mim. Não tenho certeza ... Na verdade, comecei a usar o Fluentmigrator hoje, mas você sempre deve estar refatorando quando possível!

NOTA: Se você faz métodos de ajudante/extensão para suas migrações, você deve Nunca sempre sempre Mude o que esses métodos fazem. Se o fizer, alguém poderia tentar executar suas migrações e as coisas poderiam explodir porque os métodos auxiliares que você usou para criar a migração nº 1 funciona de maneira diferente agora do que antes.

Aqui está o código para criar colunas, caso isso ajude a criar métodos auxiliares: https://github.com/schambers/fluentmigrator/blob/master/src/fluentmigrator/builders/create/column/createcolumnumxpressionbuilder.cs

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top