2017-02-13 29 views
0

我正在編寫Xamarin Android應用程序並使用Azure Mobile SDK。我的數據模型的用戶列表與ListItems。由於用戶可以共享多個「列表」和「列表」,用戶和列表之間通過UserLists實體進行管理存在多對多關係。所以用戶 - >用戶列表< - 列表< - ListItems。 在給定設備上,只會加載當前用戶的列表。使用Azure移動客戶端SDK的一個與多個存儲庫 - 架構指導

所以我有4個實體在後端,我有4個實體在客戶端上。同步設置,使它只拉取當前用戶的列表(和關聯的列表項)。現在,所有4個實體都由一個存儲庫(ListRepository)管理,因爲這些實體是如此相互關聯的。這是一個很好的模式嗎?有4個實體,它已經失控(只有2個是「可更新的」 - Lists和ListItems)。如果這個模型增長,倉庫會變得相當臃腫。

或者,擁有多個存儲庫(每個實體一個)並將它們分組到一個服務下將是人們所期望的,但這意味着服務和各個存儲庫之間來回訪問以捕獲相互依賴的實體。另外,如何處理參照完整性,除非它們都與相同的SyncContext有關?

+0

「存儲庫」和「實體」是什麼意思?你的列表與你的實體和存儲庫之間有什麼關係?這是後端問題還是客戶端問題?或者這只是一個數據庫問題? –

回答

0

要澄清,這是一個客戶端問題。

我正在構建一個MVVM Xamarin應用程序。在Core PCL項目中,我有ViewModels,Models(a.k.a實體),Services和Repositories。 ViewModel與服務交談,後者又與使用Azure移動客戶端SDK與軟件開發工具Rest API對話的存儲庫進行交流(在某個時間點放置在Azure中)。用戶,列表和ListItem是我的模型,如上所述,它們之間有一對多的關係。

我有一個單獨的存儲庫來處理用戶模型和單獨處理List和ListItem。好像我無法提交List而沒有提交User,但用戶位於不同的存儲庫中,因此出現問題。

我已經通過將兩個存儲庫都放置在相同的靜態MobileServiceClient和MobileServiceSQLiteStore上解決了這個問題。

基於上述情況,在我看來,如果數據庫是以參照完整性來實現的,那麼a)實體必須以特定的順序從客戶端提交到後端(或者沒有提供)或b)客戶端必須爲具有關係的所有實體使用相同的MobileServiceClient和MobileServiceSQLiteStore。

相關問題