0

En utilisant un code ici:Comment écrire des requêtes paramétrées sur WAMS?

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

... comme "inspiration" pour interroger une table WAMS, je suis venu avec ceci:

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(); 
} 

Je question, cependant, que ce soit vraiment "la façon de le faire" ou même un bon moyen de le faire. Quelqu'un a-t-il un exemple de code pour interroger des tables WAMS qui me corrigent?

De même, quelle méthode est la meilleure pour insérer un enregistrement?

Ce:

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

... ou ceci:

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); 

?

Répondre

2

Le query.ToString() vous donnera la représentation sous forme de chaîne de la classe de service mobile sous-jacente, quelque chose comme Microsoft.WindowsAzure.MobileServices.MobileServiceTableQuery``1[System.String] probablement pas ce que vous voulez!

Je suppose que vous vouliez retourner le mammalDeviceID réel? Si oui, vous avez besoin de deux ajustements,

  1. Vous ne pouvez pas supposer qu'il n'y aura qu'une seule ligne renvoyée, aura donc besoin d'attendre un List<String> pas seulement un String. Si vous voulez juste un retour, vous pouvez ajouter Take(1) à la requête (mais c'est toujours une liste).
  2. Vous devez exécuter la requête en le matérialisant sur le client, dans ce cas, ToListAsync() devrait fonctionner.

donc quelque chose comme:

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() 
} 

Quant à la deuxième partie, il n'y a pas de différence autre que verbosité. Je pense que la nature fluide de la première option est plus lisible.

Questions connexes