Update a single field from a single entity with ria-services
There are situations where I only want to update a specific field of a single entity in the database.
I loaded the entities of that type into my silverlight app开发者_JAVA技巧lication, and I know they are constantly changing on the server... but there is one field which has to be set by the silverlight client... the server will only read it. How can I just send the new data for that field to the server?
Example an Entity called "TextField". I have a list of TextFields loaded in the silverlight application and every now and then the user will update the Preload (string) property of an entity and that has to go back to the server without changing anything else on the server.
I tried adding a simple SetPreloadText(...) method to the DomainService but that just makes Silverlight crash with some odd error code.
Is there a way to this? Am I working against the idea of Silverlight here? I really don't want to send the entire object back because know that at any given time the version on the client will most likely be out of date. (which is ok for this specific application)
I think SetPreloadText(..) chrashes because RIA Services uses special naming coneventions like insert/update/delete for crud unless you specify it to be named different.
If you only want to update a specific property because the other my not have changed. You should look at
this.Context.AttachAsModified(currentEntityWithAllTextFields, this.ChangeSet.GetOriginal(currentEntityWithAllTextFields));
in your update method. With this you can exactly filter out what changed...
hope this helps...
Now you need to use this :
this._yourENtitySet.Value.ApplyCurrentValues(modified); // The one you received
this._yourENtitySet.Value.ApplyOriginalValues(original); /// The original one
Hope this help !
精彩评论