Как обновить ресурс хранилища таблиц Azure, реализовав IDataServiceUpdateProvider?
Я пытаюсь открыть редактируемую таблицу хранения таблиц Azure. (Если это имеет значение: выиграть телефон 7 через CTP OData Client Lib.) На стороне сервера у меня есть 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();
}
ОБНОВЛЕНИЕ: Ответ должен был вызвать UpdateObject() во время SetValue():
public void SetValue(object targetResource, string propertyName, object propertyValue)
{
var propInfo = targetResource.GetType().GetProperty(propertyName);
propInfo.SetValue(targetResource, propertyValue, null);
UpdateObject(targetResource);
}
1 ответ
ОБНОВЛЕНИЕ: Ответ должен был вызвать UpdateObject() во время SetValue ():
public void SetValue (объект targetResource, строка propertyName, объект propertyValue) { var propInfo = targetResource.GetType().GetProperty(propertyName); propInfo.SetValue(targetResource, propertyValue, null); UpdateObject(targetResource); }