【问题标题】:Azure C# - Update a particular entry in a rowAzure C# - 更新一行中的特定条目
【发布时间】:2015-01-20 02:13:37
【问题描述】:

我在 azure 上有一个表,我希望更新表中的特定条目。当我尝试使用 .UpdateAsync(object) 更新表时;方法,整行被替换为空值并且指定的参数只被更新

更新代码

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

iray_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; }

}

【问题讨论】:

  • 将所有属性指定给类对象并调用 updateAsync 将是一项繁琐的工作
  • 据我所知 Azure 仅支持完全覆盖 Update 调用 - 您需要先查询特定记录,更新特定字段,然后将其作为参数传递。
  • yes James,这确实是一个缺点,因为每次我进行更新时,我都必须调用服务器两次; 1 用于检索现有数据,另一个用于更新数据。如果微软能想出解决这个问题的办法,那就太好了。
  • 难道你不必先拉取用户ID吗?无论如何,我同意,肯定有一个更优化的解决方案,它只会更新存在的属性。
  • 如果您不想为单个字段更新获取、更新、SaveChanges 等,最好返回执行 SQL 字符串查询。或者添加一个存储过程来完成这项工作,在一个操作中,并使用 EF 调用它:)

标签: c# azure azure-mobile-services


【解决方案1】:

如果您只想更新对象的特定属性子集,您可以使用 UpdateAsync 调用的“无类型”(JSON) 重载,它允许您传递仅包含所需属性的 JSON 对象更新。在您的示例中,它看起来类似于以下代码:

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

【讨论】:

    猜你喜欢
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 2016-10-20
    • 2016-08-22
    • 1970-01-01
    相关资源
    最近更新 更多