Comment puis-je mettre à jour Azure Table des ressources de stockage en mettant en place IDataServiceUpdateProvider?

StackOverflow https://stackoverflow.com/questions/3910988

Question

Je suis en train d'exposer une table modifiable Azure Table Storage. (S'il importe:. Pour gagner Phone 7 via le client OData Lib CTP) Du côté du serveur, j'ai DataServiceContext: TableServiceContext, IDataServiceUpdateProvider

Je peux ajouter des objets supprimer, mais lorsque je tente de mettre à jour une ressource, SaveChanges () ne semble pas « ramasser » les valeurs qui avaient été affecté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);
    }
Était-ce utile?

La solution

MISE À JOUR: La réponse était d'appeler UpdateObject () pendant SetValue ():

SetValue public void (object targetResource, chaîne propertyName, objet propertyValue)     {         var PropInfo = targetResource.GetType () getProperty (propertyName).         propInfo.SetValue (targetResource, propertyValue, null);         UpdateObject (targetResource);     }

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top