我剛剛開始使用Azure移動服務。我正在設置我的數據庫。但我不知道我將如何處理一對多/多對多的關係。 Azure Mobile並沒有提供這方面的支持,所以我不確定還有什麼要做。一種方法是將外鍵ID存儲在特定實體中,然後在該表上運行查詢以獲取與特定ID匹配的所有項目。我認爲這可能有點太費時。不確定。任何建議或見解如何做到這一點。 我不得不求助於用JavaScript在後端創建某種形式的邏輯來創建服務器端的實際關係嗎?如何支持與Azure移動服務的一對多關係Android
1
A
回答
2
使用AMS for Android支持一對多關係的一種方法是創建ArrayList並將外鍵/ ID存儲在特定表中。然後,ArrayList將包含要檢索的相關實體的ID,因此您只需檢索該數組並提取ID即可。 AWS目前不支持ArrayList的序列化和反序列化,因此您需要編寫自定義序列化程序來實現此目的。這可以通過使用GSON完成。這是一個例子。
public class CollectionSerializer<E> implements JsonSerializer<Collection<E>>,
JsonDeserializer<Collection<E>> {
public JsonElement serialize(Collection<E> collection, Type type,
JsonSerializationContext context) {
JsonArray result = new JsonArray();
for(E item : collection){
result.add(context.serialize(item));
}
return new JsonPrimitive(result.toString());
}
@SuppressWarnings("unchecked")
public Collection deserialize(JsonElement element, Type type,
JsonDeserializationContext context) throws JsonParseException {
JsonArray items = (JsonArray) new JsonParser().parse(element.getAsString());
ParameterizedType deserializationCollection = ((ParameterizedType) type);
Type collectionItemType = deserializationCollection.getActualTypeArguments()[0];
Collection list = null;
try {
list = (Collection)((Class<?>) deserializationCollection.getRawType()).newInstance();
for(JsonElement e : items){
list.add((E)context.deserialize(e, collectionItemType));
}
} catch (InstantiationException e) {
throw new JsonParseException(e);
} catch (IllegalAccessException e) {
throw new JsonParseException(e);
}
return list;
}
}
完成此操作後,將其添加到您創建的MobileServiceClient實例。
mClient.registerSerializer(ArrayList.class,new CollectionSerializer<Object>());
2
什麼喬爾提到的另一種方法是,你可以對客戶端的「正規軍」的關係,然後反規範化他們 - 不僅按鍵,而是整個價值 - 將他們的服務器上之前。 http://blogs.msdn.com/b/carlosfigueira/archive/2013/08/29/complex-types-and-azure-mobile-services-android-version.aspx的帖子展示了一些可以完成的方法。
相關問題
- 1. Azure移動服務與Android
- 2. Azure移動互動與移動服務
- 3. Azure移動服務與Xamarin
- 4. 持久認證的Azure移動服務
- 5. NHibernate不支持多對多關係
- 6. 單一Azure移動服務,多個操作系統
- 7. 聯繫網站在Azure移動服務
- 8. 移動Azure的服務,爲iOS和Android
- 9. Azure的移動服務與WinJS
- 10. 如何從Azure移動服務表(.Net後端)中檢索Azure移動服務的系統屬性.Net後端
- 11. Azure移動服務對錶的限制
- 12. 如何通過天藍色的移動服務訪問關係數據(sql azure)?
- 13. Azure Easy Tables是否支持關係?
- 14. SQL Azure支持關係數據庫嗎?
- 15. 一對多與多對多的關係
- 16. 在android中使用azure移動服務
- 17. MVVMCross(WP8,Android,iPhone)+ Azure移動服務
- 18. 增加max count azure移動服務android
- 19. Ember.js:如何堅持多對多關係
- 20. Azure移動服務與Web API
- 21. Azure移動服務版本與Microsoft.Build.Framework
- 22. 查詢與移動服務Azure iOS
- 23. Monodroid與Windows Azure移動服務
- 24. 序列化對象Azure移動服務
- 25. 如何保持與nhibernate同步的多對多關係?
- 26. 如何管理對象之間的一對多關係? (移動相關)
- 27. 如何實現與Android室持久性庫的多對多關係?
- 28. JPA(EclipseLink)支持一對多的關係沒有Cascade.PERSIST
- 29. Kohana的支持對於一個關係別名 - >多模型
- 30. iOS核心數據是否支持多對一的關係?
非常感謝這個解決方案。我打算用這個代替:) –