4

嗨,我相對較新的Azure移動應用程序和實體框架,所以 我一直在努力一段時間與以下。從Azure移動應用程序獲取嵌套複雜類型的模型

我在.NET上的天藍色移動應用如下模型:

public class Location : EntityData 
{ 
    public ProximityRange ProximityRange { get; set; }   
    public double Rssi { get; set; } 
    public DateTime TimeOfLocation { get; set; } 
} 

其中ProximityRange僅僅是其它兩個屬性

public class ProximityRange 
{ 
    public double Distance { get; set; } 

    public double Accuracy { get; set; } 
} 

控制器有一個方法來獲得的容器類查詢所有位置。

public IQueryable<Location> GetAllLocations() 
{ 
    var query = Query(); 
    return query; 

} 

但是,當我打電話給控制器時,我只能用TimeOfLocation和Rssi獲得JSON。

在實體位置的數據庫表我有3列

ProximityRange_Accuracy, ProximityRange_Distance and Rssi 

我需要從控制器GetAllLocations作爲JSON對象的所有3個屬性。

我試過在查詢中使用$ expand = ProximityRange,但會引發內部錯誤。

我也試過將ProximityRange聲明爲ComplexType,但也沒有運氣。

非常感謝有人幫助。

回答

2

在Azure移動應用程序模型中,您無法使用複雜類型(如DbGeography或ProximityRange)。 OData翻譯不處理它們。

最好的辦法是將它翻譯成一個字符串,然後實現一個JSON編碼器/解碼器。要看的類是JsonConverter

+0

所以,你的意思是避免使用azure移動服務,但創建一個自定義api轉換json請求和響應。我理解正確嗎? – batmaci

+0

否 - 您仍然可以通過移動應用程序SDK傳輸字符串表示。你只需要處理轉換爲真實的地理區域。這主要是因爲不同的平臺代表不同的地理區域 - 它是數據庫中的DbGeography,但可以是客戶端模型中的其他表示。 –