Sto costruendo un primo codice EF6 utilizzando l'API fluente. La mia comprensione è, per impostazione predefinita, le stringhe saranno nvarchar (max), che (per essere smussato) è stupido per un default. Così ho aggiunto il seguente codice convenzione per impostare lunghezza massima predefinita di 255 caratteri:Imposta il codice EF6 Prime stringhe su nvarchar (max)
modelBuilder.Properties<string>()
.Configure(p => p.HasMaxLength(255));
Poi ho creato un decoratore in questo modo:
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
public class TextAttribute : Attribute
{
}
voglio applicare questo a specifiche proprietà di stringa che ho effettivamente vuole essere NVARCHAR (MAX).
Cosa inserisco nell'API fluente per assicurarmi che tutte le proprietà delle stringhe con il decoratore [Testo] siano costruite nel db con NVARCHAR (MAX)? Presumo che sarebbe qualcosa di simile:
modelBuilder.Properties<string>()
.Where(p => p.CustomAttributes.Any(a => typeof(TextAttribute).IsAssignableFrom(a.AttributeType)))
.Configure(p => p.HasMaxLength(?????));
O sto facendo questo completamente sbagliato?