2010-04-25 4 views
0

J'ai du mal à mettre à jour un seul champ sans avoir à récupérer tout l'enregistrement avant de le sauvegarder. Par exemple, dans mon application Web, j'ai un éditeur en place pour les champs Nom et Description d'un objet. Une fois que vous avez modifié l'un des champs, il envoie le nouveau champ (avec la valeur d'ID de l'objet) au serveur Web. Ce que je veux, c'est que le serveur web prenne cette valeur et cette identification et ne mette à jour que le seul champ. 1) Lorsque j'obtiens la valeur que je veux changer, la valeur et l'ID, récupérer l'enregistrement de la base de données, mettre à jour le champ dans l'objet C#, et puis renvoyez-le au serveur. Je n'aime pas cette méthode car elle inclut non seulement un appel de lecture de base de données complètement inutile (qui inclut deux tables en raison de la façon dont mon schéma est).Impossible de mettre à jour un seul champ à l'aide de Linq to Sql

2) Définissez UpdateCheck pour tous les champs (sauf les clés primaires) sur UpdateCheck.Never. Cela ne marche pas pour moi (je pense) à cause de ma couche de mapping entre Linq to Sql et ma couche Entity/ViewModel. Lorsque je convertis mon entité en l'objet linq en sql db, il semble que ces champs soient mis à jour, quel que soit le paramètre UpdateCheck. C'est peut-être juste à cause des entiers, puisque ne pas mettre un int signifie que c'est un zéro (et non, je ne peux pas utiliser int? À la place).

Y a-t-il d'autres options?

Répondre

3
+0

Vous allez être dans cette position avec une technologie ORM que vous utilisez. –

+0

Oui. Les procédures stockées sont votre seule option à gauche. Il est dans la nature de L2S d'avoir besoin de tout l'objet en mémoire avant de pouvoir le sauver. Cependant, je ne reviendrai à une procédure stockée que lorsque la récupération de l'objet aura une surcharge trop importante. (comme toujours, ne pas optimiser prématurément). – Steven

Questions connexes