J'utilise linq to sql dans ma couche de données où j'ai ajouté une table "settings" à la table asp_user habituelle. Dans cette table de paramètres, je garde plusieurs enregistrements dont l'un est l'unité préférée (une clé étrangère à la table Unités).La mise à jour Linq to Sql crée un enregistrement en double
Maintenant, lorsque cette unité préférée doit changer (disons de litre en kilogramme), je fais un appel à mon UnitService pour obtenir l'instance d'unité correcte et définir mon paramètre.PréféréUnit à cette instance. Cela crée un nouvel élément (en double) dans la base de données (il y a maintenant deux enregistrements kilogrammes dans ma table Unités). Ce n'est bien sûr pas ce que j'avais prévu.
J'ai le sentiment que je fais un tas de choses fondamentales mal
UserSetting setting = AccountService.GetUserSetting(user.Identity.Name);
if (setting.PreferedUnitId != unitId)
setting.Unit = UnitService.GetUnitById(unitId);
AccountService.SaveuserSetting(setting);
Oui, vous avez raison. Ça va probablement le réparer. –