Actualizar un registro en una base de datos usando WCF Data Services

Estoy tratando de usar WCF Data Services y estoy un poco confundido acerca de dónde me equivoco al intentar actualizar un registro, en función de un valor de campo clave.
Mi enfoque simplificado, que no funciona:

 MydbEntities context = new MydbEntities(new Uri("http://localhost:53051/Services/MydbService.svc"));
 MyEntity avt = context.MyTable.Where(p => p.EntID == "val1").FirstOrDefault();
 avt.FieldToEdit = 1;
 context.UpdateObject(avt);
 context.BeginSaveChanges(OnChangesSaved, context);
 ...
 private void OnChangesSaved(IAsyncResult result)
 {            
     MessageBox.Show("seems ok");//I'm getting this message, but, in fact, data in db remains unchanged
 }

Por favor, dime, ¿en qué me equivoco?

preguntado el 10 de mayo de 11 a las 14:05

2 Respuestas

Encontré la causa del problema. Fue trivial (me siento como un idiota), no se establecieron derechos de acceso de escritura en el inicializador del servicio. Hubo lo siguiente:

public static void InitializeService(DataServiceConfiguration config)
{
    config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
      ...
}

después de que lo cambié a:

config.SetEntitySetAccessRule("*", EntitySetRights.All);

todos empezaron a funcionar como se esperaba. Y, por supuesto, establecí una regla de acceso tan amplia solo con fines de prueba. Posteriormente debería restringirse.

contestado el 10 de mayo de 11 a las 21:05

En su controlador OnChangesSaved, debe llamar context.EndSaveChanges(result).

Este patrón de enlace tiene un código de muestra que ilustra todo el proceso.

contestado el 10 de mayo de 11 a las 18:05

Gracias. Lo intenté, pero el problema es que, al intentar llamar a eso, aparece un error de tiempo de ejecución: An error occurred while processing this request. - rem

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.