2009-12-07 5 views
0

Nous essayons de mettre à jour une entité via WCF et l'entité contient une colonne Timestamp. Lorsque nous essayons la mise à jour, nous obtenons l'erreur Data.Linq suivante, "Un membre qui est calculé ou généré par la base de données ne peut pas être modifié." Ce message fait référence à la colonne Horodatage.Problème avec la mise à jour d'une entité avec une colonne d'horodatage via WCF

Si nous essayons la même mise à jour sans utiliser WCF, cela fonctionne très bien. Donc, le problème doit être avec WCF. Nous avons l'attribut [DataMember] approprié sur la propriété Timestamp pour la sérialisation. Quelqu'un a-t-il une idée du problème?

Merci pour votre aide.

Randy

Répondre

0

Le problème n'a rien à voir avec WCF.

Est-ce vraiment un type de données SQL Server TIMESTAMP?

Vous ne pouvez pas les mettre à jour - SQL Server mettra automatiquement ces champs à jour chaque fois que quelque chose arrivera à la ligne. Voir ici "Timestamps vs. Datetime data types" ou ici "Misunderstanding timestamp"

Comment gérez-vous la mise à jour des données Linq-to-SQL, lors de la réception de ce message WCF? Pouvez-vous nous montrer du code pour ça? Par exemple: ce champ/propriété est-il défini en tant que propriété en lecture seule sur le contrat de données?

De même, puisque vous envoyez les entités via WCF, celles-ci seront des entités "déconnectées" à Linq-to-SQL, par exemple, puisque vous envoyez les entités via WCF. entités qui n'ont pas été à l'intérieur de la portée d'un DataContext à tout moment. Cela peut avoir pour effet que Linq-to-SQL souhaite ajouter une nouvelle entité avec une nouvelle valeur pour la colonne timestamp à votre base de données ....

+0

Oui, il s'agit vraiment d'un type de données Timestamp. Et je crois que c'est un problème de WCF parce que les mises à jour fonctionnent bien quand vous n'utilisez pas WCF. En outre, L2S ne sait pas tenter de mettre à jour cette colonne dans SQL Server car elle est marquée comme une valeur générée automatiquement. –

+0

bien, alors quelque chose doit être faux dans votre code qui essaie de mettre à jour les entités L2S de votre service WCF - pouvez-vous nous montrer ce code ?? –

Questions connexes