2015-01-19 2 views
1

У меня есть таблица на лазуре, и я хочу обновить конкретную запись в таблице. когда я пытаюсь обновить таблицу с помощью .UpdateAsync (object); Метод, вся строка заменяется нулевыми значениями и параметры, указанные только обновляетсяAzure C# - обновить определенную запись в строке

UPDATE КОД класса

ipray_users data = new ipray_users {id= settings["userid"].ToString(), favorite = String.Format(globals.id + "#") }; 
await App.MobileService.GetTable<ipray_users>().UpdateAsync(data); 

ipray_users

class ipray_users 
{ 
    public string id { get; set; } 
    public int age { get; set; } 
    public string email { get; set; } 
    public string gender { get; set; }  
    public string country { get; set; } 
    public string name { get; set; } 
    public string favorite { get; set; } 

} 
+0

с указанием всех свойств объекта класса и вызовом updateAsync будет утомительной работой –

+1

Насколько я знаю, Azure поддерживает только полную перезапись ' Update' - вам нужно сначала запросить конкретную запись, обновить определенные поля и передать это как параметр. – James

+0

Да, Джеймс, это действительно недостаток, потому что каждый раз, когда я делаю обновление, я должен дважды позвонить на сервер; 1 для извлечения существующих данных, другой для его обновления. Было бы здорово, если бы Microsoft могла придумать обходной путь для этой проблемы. –

ответ

4

Если вы хотите обновить только определенное подмножество свойств вашего объекта, вы можете использовать перегрузку «untyped» (JSON) вызова UpdateAsync, который позволяет передавать объект JSON только с теми свойствами, которые вы хотите обновить. В вашем примере, это будет выглядеть как код ниже:

JObject data = new JObject { 
    { "id", settings["userid"].ToString() }, 
    { "favorite", String.Format(globals.id + "#") } 
} 
await App.MobileService.GetTable<ipray_users>().UpdateAsync(data); 
Смежные вопросы