Windows phone 7 如何通过实现IDataServiceUpdateProvider更新Azure表存储资源?

Windows phone 7 如何通过实现IDataServiceUpdateProvider更新Azure表存储资源?,windows-phone-7,odata,azure-table-storage,Windows Phone 7,Odata,Azure Table Storage,我正在尝试公开可编辑的Azure表存储表。在服务器端,我有一个DataServiceContext:TableServiceContext,IDataServiceUpdateProvider 我可以添加和删除对象,但当我尝试更新资源时,SaveChanges()似乎不会“拾取”调用SetProperty时分配的值 //Works fine public object GetResource(IQueryable query, string fullTypeName) {

我正在尝试公开可编辑的Azure表存储表。在服务器端,我有一个DataServiceContext:TableServiceContext,IDataServiceUpdateProvider

我可以添加和删除对象,但当我尝试更新资源时,SaveChanges()似乎不会“拾取”调用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();
    }

更新:答案是在SetValue()期间调用UpdateObject():

public void SetValue(对象targetResource、字符串propertyName、对象propertyValue) { var propInfo=targetResource.GetType().GetProperty(propertyName); 设置值(targetResource,propertyValue,null); 更新对象(targetResource); }

public void SetValue(object targetResource, string propertyName, object propertyValue)
    {
        var propInfo = targetResource.GetType().GetProperty(propertyName);
        propInfo.SetValue(targetResource, propertyValue, null);
        UpdateObject(targetResource);
    }