J'utilise ASP.NET DynamicData (basé sur LINQ to SQL) sur mon site pour l'échafaudage de base. Sur une table, j'ai ajouté des propriétés supplémentaires, qui ne sont pas stockées dans la table, mais sont récupérées ailleurs. (Informations de profil pour un compte d'utilisateur, dans ce cas).ASP.NET DynamicData: Que se passe-t-il lors d'une mise à jour?
Ils sont très bien affichés, mais lors de la modification de ces valeurs et en appuyant sur "Update", ils ne sont pas modifiés.
Voici ce que les propriétés ressemblent, la table est la table standard aspnet_Users:
public String Address
{
get
{
UserProfile profile = UserProfile.GetUserProfile(UserName);
return profile.Address;
}
set
{
UserProfile profile = UserProfile.GetUserProfile(UserName);
profile.Address = value;
profile.Save();
}
}
Quand je pète le débogueur, je l'ai remarqué que, pour chaque mise à jour du accesseur set
est appelé trois fois. Une fois avec la nouvelle valeur, mais sur une instance d'utilisateur nouvellement créée, une fois avec l'ancienne valeur, à nouveau sur une nouvelle instance, et enfin avec l'ancienne valeur sur l'instance existante. En me demandant un peu, j'ai vérifié avec les propriétés créées par le concepteur, et elles aussi sont appelées trois fois (presque) de la même manière. La seule différence est que le dernier appel contient la nouvelle valeur pour la propriété.
Je suis un peu perplexe ici. Pourquoi trois fois, et pourquoi mes nouvelles propriétés se comportent-elles différemment? Je serais reconnaissant pour toute aide à ce sujet! =)
Merci! Je suis allé avec l'option 1 ici, bien que l'écriture d'un fournisseur de profil propre serait sûrement le meilleur moyen. – Jens