Dans ma classe DbContext
, j'ai les éléments suivants:
void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Properties<string>().Configure(c => { c.HasMaxLength(250); });
}
mais aussi à l'intérieur de la classe EntityTypeConfiguration
pour un modèle spécifique, j'ai:
{
Property(p => p.Name).HasMaxLength(500);
}
Le problème est que la définition de la propriété à 500 dans la classe Configuration ne prend pas effet et EF valide toujours le maximum à 250.
Comment puis-je avoir un paramètre général de 250 mais remplacer par une API fluide selon les besoins à l'intérieur de chaque classe?
Si vous souhaitez donner un champ de chaîne à 500 caractères.
Vous pouvez le faire en utilisant l'attribut " MaxLength ".
Je crée un exemple de table comme suit.
Ma configuration de contexte.
void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Properties<string>().Configure(c => { c.HasMaxLength(250); });
}
Je crée une table nommée FooEntity.
using System;
using System.ComponentModel.DataAnnotations;
namespace Foo.Model
{
public class FooEntity
{
[MaxLength(500)]
public string FooName { get; set; }
}
}
Après avoir ajouté cet attribut, la sortie de la migration est la suivante. Même si une limite de 250 caractères est donnée, elle sera transmise sous forme de 500 caractères en SQL.
CreateTable(
"dbo.FooEntity",
c => new
{
FooName = c.String(maxLength: 500)
});