2013-08-11 1 views
0

Il est spécifiquement mentionné que WAMS nécessite une colonne int ID pour fonctionner dans SQL Azure. Toutefois, lors du développement d'applications d'entreprise sur des bases de données distribuées, les GUID sont la clé primaire préférée. Comment évite-t-on d'éviter la colonne int ID et de prendre en charge le GUID?Comment prendre en charge GUID dans les services Windows Azure Mobile

Si cela n'est pas possible, comment peut-on procéder pour synchroniser des données sur le cloud à partir de plusieurs bases de données autonomes sur différentes tablettes/mobiles avec l'application WAMS en cours d'exécution?

Répondre

1

Une mise à jour sur cette question - la semaine dernière, les services mobiles prennent désormais en charge les chaînes arbitraires en tant qu'ID de la colonne. Consultez la section this post pour plus d'informations. Vous pouvez maintenant insérer des données avec une valeur 'id' (ce que vous ne pouviez pas auparavant), de sorte que vous pouvez utiliser une valeur guid sur insert. De même, si vous n'envoyez rien dans la colonne Id lors de l'insertion (ou si cette valeur est définie sur null), le serveur génère par défaut un identifiant unique pour la colonne.

+0

Carlos, Lorsque j'envoie une valeur nulle sur l'ID, les opérations aboutissent à une exception du type "{" Les clés générées par le stockage ne sont prises en charge que pour les colonnes d'identité. La colonne clé 'Id' a le type 'SqlServer.nvarchar', ce qui n'est pas un type valide pour une colonne d'identité. "}" Une idée de ce qui ne va pas? – JuanK

0

À l'heure actuelle, je ne pense pas que son possible d'utiliser un GUID dans la ID colonne. La documentation pour les scripts côté serveur Mobile Services spécifient que pour la fonction Delete, le ID doit être un type javascript numéro. Autant que je peux voir, tout l'exemple de code disponible, et le code que vous pouvez télécharger à partir du portail est assez explicite en utilisant un type entier pour le ID.

Vous devrez trouver un moyen de générer une valeur entière unique chaque fois qu'un nouvel enregistrement est créé. L'exemple here utilise un nombre de ticks dans Insérez le script, ce qui est probablement OK pour une application à faible volume, mais il faudrait le rendre plus robuste, peut-être en générant un nombre basé sur l'identité de l'utilisateur et en le combinant avec le nombre de ticks .

0

Je suis un peu en retard à cela, mais j'ai trouvé que vous pouvez utiliser un GUID comme une clé primaire à une table de services mobiles. Quelques points cependant. Définissez la propriété JSON minuscules « id » et d'utiliser un guid annulable, ce qui permet d'insérer en cas d'un défaut sur la colonne id (NewId())

[JsonProperty(PropertyName = "id")] 
    public Guid? Id { get; set; } 

Ash ..

Questions connexes