J'essaie d'exposer une table de stockage de table Azure modifiable. (Si c'est important: pour gagner Phone 7 via le ODTP Client Lib CTP.) Du côté serveur, j'ai un DataServiceContext: TableServiceContext, IDataServiceUpdateProviderComment puis-je mettre à jour la ressource Azure Table Storage en implémentant IDataServiceUpdateProvider?
Je peux ajouter et supprimer des objets, mais quand j'essaye de mettre à jour une ressource, SaveChanges() ne semble pas "ramasser" les valeurs qui ont été assignées dans les appels à SetProperty.
//Works fine
public object GetResource(IQueryable query, string fullTypeName)
{
var resource = query.Cast<MyDataModel>().SingleOrDefault();
if (fullTypeName != null && resource.GetType().FullName != fullTypeName)
{
throw new ApplicationException("Unexpected type for this resource");
}
return resource;
}
//Seems to work fine: gets called for each property.
public void SetValue(object targetResource, string propertyName, object propertyValue)
{
var propInfo = targetResource.GetType().GetProperty(propertyName);
propInfo.SetValue(targetResource, propertyValue, null);
}
//This gets called, but resource is not updated
void IUpdatable.SaveChanges()
{
//Forwarding from IUpdatable.SaveChanges() to DataServiceContext.SaveChanges()
base.SaveChanges();
}
MISE À JOUR: La réponse était d'appeler UpdateObject() pendant SetValue():
public void SetValue(object targetResource, string propertyName, object propertyValue)
{
var propInfo = targetResource.GetType().GetProperty(propertyName);
propInfo.SetValue(targetResource, propertyValue, null);
UpdateObject(targetResource);
}