0

在这里使用一些代码:

http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2012/09/19/experimenting-with-windows-azure-mobile-services.aspx

...作为查询 WAMS 表的“灵感”,我想出了这个:

public static async Task<string> GetMammalDeviceID(string mammalID, string zoologistDeviceID)
{
    IMobileServiceTable<DUCKBILLED_PLATYPI> table = App.MobileService.GetTable<DUCKBILLED_PLATYPI>();

    MobileServiceTableQuery<String> query =
        table.Where(i => i.mammalID == mammalID).
              Where(j => j.zoologistDeviceID == zoologistDeviceID).
              Select(k => k.mammalDeviceID);
    return query.ToString();
}

不过,我质疑这是否真的是“做到这一点的方法”,甚至是一种好的方法。有人有查询 WAMS 表的示例代码吗?

同样,以下哪种方法是插入记录的首选方法?

这:

DUCKBILLED_PLATYPI platypus = new DUCKBILLED_PLATYPI { mammalID = mammalEmail, zoologistDeviceID = zoologistDeviceID, zoologistName = zoologistName };
await App.MobileService.GetTable<DUCKBILLED_PLATYPI>().InsertAsync(platypus);

...或这个:

DUCKBILLED_PLATYPI platypus = new DUCKBILLED_PLATYPI { mammalID = mammalEmail, zoologistDeviceID = zoologistDeviceID, zoologistName = zoologistName };
IMobileServiceTable<DUCKBILLED_PLATYPI> platypi = App.MobileService.GetTable<DUCKBILLED_PLATYPI>();
await platypi.InsertAsync(platypus);

?

4

1 回答 1

2

query.ToString()将为您提供底层移动服务类的字符串表示形式,可能Microsoft.WindowsAzure.MobileServices.MobileServiceTableQuery``1[System.String]不是您想要的!

我假设您想返回实际的哺乳动物设备 ID?如果是这样,您需要进行两次调整,

  1. 您不能假设只会返回一行,因此需要期待 aList<String>而不仅仅是 a String。如果您只想要一个返回,您可以添加Take(1)到查询中(但它仍然是一个列表)。
  2. 您需要通过在客户端上实现查询来执行查询,在这种情况下,ToListAsync()应该可以工作。

所以像:

public static async Task<List<string>> GetMammalDeviceID(string mammalID, string zoologistDeviceID)
{
    IMobileServiceTable<DUCKBILLED_PLATYPI> table = App.MobileService.GetTable<DUCKBILLED_PLATYPI>();

    MobileServiceTableQuery<String> query =
        table.Where(i => i.mammalID == mammalID).
              Where(j => j.zoologistDeviceID == zoologistDeviceID).
              Select(k => k.mammalDeviceID);
    return await query.ToListAsync()
}

至于第二部分,除了冗长之外没有其他区别。我认为第一个选项的流动性更具可读性。

于 2012-12-13T02:37:16.553 回答