2010-04-02 3 views
0

Dans certaines situations, je souhaite uniquement mettre à jour un champ spécifique d'une seule entité dans la base de données.Mise à jour d'un seul champ à partir d'une seule entité avec ria-services

Je chargé les entités de ce type dans mon application silverlight, et je sais qu'ils sont en constante évolution sur le serveur ... mais il est un domaine qui doit être fixé par le client ... silverlight le serveur ne le lira que Comment puis-je simplement envoyer les nouvelles données pour ce champ au serveur?

Exemple d'une entité appelée "TextField". J'ai une liste de TextFields chargé dans l'application silverlight et de temps en temps l'utilisateur mettra à jour la propriété Preload (string) de une entité et qui doit retourner au serveur sans rien changer d'autre sur le serveur.

J'ai essayé d'ajouter une méthode SetPreloadText (...) simple au DomainService mais fait simplement planter Silverlight avec un code d'erreur impair.

Y a-t-il un moyen d'y parvenir? Est-ce que je travaille contre l'idée de Silverlight ici? Je ne veux vraiment pas renvoyer l'intégralité de l'objet car je sais qu'à tout moment la version sur le client sera probablement obsolète. (ce qui est correct pour cette application spécifique)

Répondre

0

Je pense que SetPreloadText (..) se bloque car RIA Services utilise des coneventions spéciales de nommage comme insert/update/delete pour crud sauf si vous spécifiez qu'il doit être nommé différent.

Si vous souhaitez uniquement mettre à jour une propriété spécifique car les autres n'ont pas été modifiées. Vous devriez regarder

this.Context.AttachAsModified(currentEntityWithAllTextFields, this.ChangeSet.GetOriginal(currentEntityWithAllTextFields)); 

dans votre méthode de mise à jour. Avec cela, vous pouvez filtrer exactement ce qui a changé ...

espérons que cette aide ...

+0

La méthode AttachAsModified n'est pas disponible ... pas dans le service et pas sur le client, des idées? – TimothyP

+0

utilisez-vous les services SL3 et RIA bêta, ou les services SL4 et RIA RC? Si vous utilisez le RC, AttachAsModified a été déplacé vers le entityset, donc ce serait this.Context.TextFields.AttachAsModified –

+0

SL4 RC, je vais jeter un oeil – TimothyP

0

Maintenant, vous devez utiliser:

this._yourENtitySet.Value.ApplyCurrentValues(modified); // The one you received 
    this._yourENtitySet.Value.ApplyOriginalValues(original); /// The original one 

Hope this aide!