Ensemble EF6 le Premier Code des chaînes couramment le type de données nvarchar(max)

Je suis en train de construire un EF6 le premier code modèle à l'aide de l'API fluent. Ma compréhension est, par défaut, les chaînes seront de type nvarchar(max), ce qui (pour être franc) est stupide pour un défaut. J'ai donc ajouté la convention ci-après code de max par défaut de la longueur de 255 caractères:

        modelBuilder.Properties<string>()
            .Configure(p => p.HasMaxLength(255));

Puis j'ai créé un décorateur comme suit:

[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
public class TextAttribute : Attribute
{
}

Je veux appliquer cette spécifique des propriétés de la chaîne que je veux réellement être de type NVARCHAR(MAX).

Que dois-je mettre dans l'API fluent pour s'assurer que toutes les propriétés de la chaîne avec le [Texte] décorateur sont intégrées dans la base de données avec le type de données NVARCHAR(MAX)? Je suppose que ce serait quelque chose comme ceci:

        modelBuilder.Properties<string>()
            .Where(p => p.CustomAttributes.Any(a => typeof(TextAttribute).IsAssignableFrom(a.AttributeType)))
            .Configure(p => p.HasMaxLength(?????));

Ou suis-je le faire complètement tort?

  • Est l'aide de l'effectif de type nvarchar(max), à la limite de longueur de mal? 2^30-1