Le problème est assez simple, j'ai modifié la longueur par défaut (32) pour la propriété username à 500, mais il semble que le code est bloqué à 32. Une idée pourquoi cela se produit?La longueur de la chaîne UserName de substitution ne fonctionnait pas lors de l'appel de UserManager.CreateUserAsync, même si la longueur de la chaîne était correcte.
La longueur de la chaîne pour UserName AbpUsers:
public class User : AbpUser<User>
{
[MaxLength(500)]
public override string UserName { get; set; }
}
Et cela a mis à jour avec succès la longueur db UserName.
Mais quand j'ai appelé
CheckErrors(await UserManager.CreateAsync(user));
Il retournerait:
System.Data.Entity.Validation.DbEntityValidationException: Validation failed for one or more entities.
Ce qui me gêne est que ce genre d'exception ne peut être capturé par SaveChanges:
public override int SaveChanges()
{
try
{
return base.SaveChanges();
}
catch (DbEntityValidationException e)
{
foreach (var eve in e.EntityValidationErrors)
{
Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
eve.Entry.Entity.GetType().Name, eve.Entry.State);
foreach (var ve in eve.ValidationErrors)
{
Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
ve.PropertyName, ve.ErrorMessage);
}
}
throw;
}
}
Votre l'aide serait très appréciée!
Désolé, j'ai essayé de remplacer l'AbpUserBase et de faire référence au nouveau MaxUserNameLength dans le code, mais toujours sans succès. – Spencer
vous devez le faire dans DbContext avant base.OnModelCreating (modelBuilder) ligne –
Merci pour la réponse, mais pouvez-vous s'il vous plaît aider à expliquer comment modifier le MaxUserNameLength dans OnModelCreating? Je suis désolé que je ne comprends pas vraiment pourquoi cela compte . J'ai créé une nouvelle base de données, avec l'annotation UserName explicitement définie sur [StringLength (1000)]. EF peut générer avec succès les tables avec nvarchar 1000, mais d'une manière ou d'une autre, l'insertion ne fonctionnera pas. – Spencer