3

我遇到了一個主要問題。在Azure移動服務中使用ASP.NET 4.0成員資格提供程序

我正在構建一個使ASP.NET 4 Web App> Azure SQL> Azure Mobile Service> Windows Phone 8應用程序的系統。數據輸入到已經在azure上託管的網站,該網站使用成員資格提供程序及其默認表。此數據已成功存儲在Azure SQL數據庫中。

我的主要障礙是Azure移動服務要求其上的每個表的主鍵都被稱爲「id」 - 小寫!瘋狂在我看來。當然,會員供應商對PK的名稱也不相同。

問題 - 我是否應該重新設計我的整個ASP.NET應用程序(大量時間努力)使用CUSTOM成員(名爲「id」的PK coloum)或試圖找到一種方法來嘗試更改列名稱以「ID」(不知道如何!)。有沒有人有任何建議?非常感謝提前。

回答

1

我不認爲使用Azure移動服務應該促使您重新構建現有的所有架構。這就是說,三種可能的解決方案,你可以嘗試。

第一個是實際上不使用Azure移動服務的EntityData類 - 它不是強制從orer中的EntityData繼承來使用AMS。如果你想使用TableController,你需要繼承EntityData,這可能是一個好主意,因爲它提供了很多內建功能,但是你可以選擇使用普通的ApiController和你當前的模型。

另一種可能的解決方案是使用所謂的DTO(數據傳輸對象),它可以幫助您保持當前的架構,但仍然能夠使用AMS。

這裏有更多的信息關於DTO一些鏈接: What is Data Transfer Object? Create Data Transfer Objects (DTOs)

一種可能implmentation:

假設你有以下型號:

public class MyUser 
{ 
    public int MyId 
    { 
     get; 
     set; 
    } 

    public string SomeOther 
    { 
     get; 
     set; 
    } 
} 

正如你所指出的如果你想在AMS中使用這個模型,你需要使用他們的Id屬性來代替MyId。如果你想保持完好MYUSER您能介紹以下類:

public class MyUserDTO : EntityData 
{ 
    public string SomeOther 
    { 
     get; 
     set; 
    } 
} 

現在,您的服務將使用MyUserDTO這就好比爲你的原始模型的代理。您必須解決的問題是您應該在MyUserDTO和MyUser之間進行轉換。如果你的模型很簡單,並且你沒有複雜的層次結構,那將很容易。如果你有複雜的模型DTO可能不是正確的方法。 Automapper是一個工具,可以幫助您從模型映射到DTO,反之亦然。

不過,我沒有太多有關您的架構的信息,並且使用DTO可能不太合適。

相關問題