J'utilise ADO.net Entity Data model pour travailler avec la base de données.La mise à jour ne fonctionne pas dans l'entité ADO.net Modèle de données
Dans mon programme, je veux mettre à jour un enregistrement de la table utilisateur, donc j'utilise le code ci-dessous pour le faire.
Cette fonction permet d'envoyer des informations utilisateur modifiées, puis d'écraser les informations avec les informations utilisateur actuelles.
Après avoir exécuté objUser = _user;
, puis appelez objContext.SaveChanges();
pour enregistrer les modifications. Mais quand je fais cela, les changements ne sont pas conservés dans la base de données. J'utilise ce code pour d'autres programmes mais dans ce cas le code ne fonctionne pas!
public void Update(tbLiUser _user)
{
LinkContext objContext = this.Context;
tbLiUser objUser = objContext.tbLiUsers.First(u => u.tluId == _user.tluId);
objContext.Attach(objUser);
objUser = _user;
objContext.SaveChanges();
}
objUser et _user sont des handles pour les objets. Lorsque vous trouvez objUser, vous trouvez un objet, assignant son handle à objUser, et l'ajoutant à votre contexte. Lorsque vous dites alors objUser = _user, vous ne mettez pas à jour l'objet, vous pointez simplement la variable vers un objet différent. Le contexte pointe toujours vers l'ancien objet. Comme le dit marc_s, vous devez copier les propriétés une par une, ou peut-être y-a-t-il un raccourci pour les copier "en masse", mais le point est que vous devez mettre à jour l'objet existant et non le réassigner. – Jay