Bonjour
Contexte :
Dans une application Web, l’utilisateur soumet un String par un formulaire contenant un textbox.
Côté serveur, il faut s’assurer que la valeur soumise ne se trouve pas déjà dans la base. (qui ne contient qu’une seule table).
Fonctionnement technique (présentation simplifiée) :
- projet MVC3, application testée sous OS Windows 7, framework-cible : .NET 4.0
- La base de donnée est gérée par entity framework en mode Code-First :
- 1 classe X« défini » la table.
- 1 classe Xdb gère la connection à la base de données :
1 2 3 4 5
|
public class XDb : DbContext
{
public DbSet<X> Datas { get; set; }
} |
Dans la classe modèle, on ajoute 1 fonction Validate pour tester la présence de la valeur soumise dans la base de donnée.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| IEnumerable<ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
{
using (XDb _db = new XDb ())
{
IQueryable<X> temprollm = _db.Datas.Where(p => (String.Compare(p.sUser_ID, this.UserId, false) == 0));
if (temprollm.Count() > 0)
{
yield return new ValidationResult(Erreur
, new[] { "UserId" });
}
}
} |
Pour le test, j’utilise la base de donnée local dont la chaine de connection est
<add name="XDb" connectionString="Data Source=(localdb)\v11.0;Initial Catalog=aspnet-Infra_Management_Tool-20140522121645;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False" providerName="System.Data.SqlClient"/>
Quand j’exécute ce code, j’ai parfois l’erreur en pièce jointe.
Est-ce parce que 15 est une valeur trop courte pour Connect Timeout ? Si Oui, quel valeur faut-il mettre ?
Florian
Partager