2016-07-07 49 views
1

我打算創建一個具有本地數據存儲功能的Xamarin.Forms項目。如何在Xamarin.Forms中替換Realm Windows Phone項目

用於存儲數據,我想使用新的Realm庫,可用於Xamarin.Forms項目 - 只是它不支持Windows Phone的項目,這是Xamarin.Forms的部分項目

我不想放棄它,所以我尋找關於我能做什麼的選項。

隨着境界支持Android和iOS,我會在這些項目中使用它們,不知何故隱藏與接口或抽象類是這樣使用的數據庫類的:

在PCL項目中,我不得不像這樣的接口:

public interface IDBOperations<T> 
{ 
    List<T> GetData(); 
    void SaveData(T input); 
} 

而且用它來與DependencyService這樣的:

DependencyService.Get<IDBOperations>().SaveData(myModel); 

在另一PCL項目,我有一個模型這樣的:

public class Model1: RealmObject 
{ 
    public int ID {get; set;} 
    public string Name {get; set;} 
} 

在Android項目:

public class DBOperations<T>: IDBOperations<T> 
{ 
    public List<T> GetData() 
    { 
    //get data from Realm 
    } 
    public void SaveData(T input) 
    { 
    //save data with Realm transaction 
    } 
} 

在Windows Phone項目:

public class DBOperations<T>: IDBOperations<T> 
{ 
    public List<T> GetData() 
    { 
    //get data from SQLite 
    } 

    public void SaveData(T input) 
    { 
    //save data with SQLite transaction 
    } 
} 

是我的方法正確嗎?或者我應該完全使用SQLite,並忘記這一點?

回答

1

我承認這一點目前並不明顯。相信我,我們正在計劃UWP(Windows Phone)支持,並希望能夠儘快推出,但在此之前,您開始的方法聽起來很合理。領域「範式」與傳統的ORM風格略有不同,因此您可能會遇到一些困難,試圖創建一個共同的抽象。我們自己還沒有真正的經驗,所以我們不確切知道陷阱是什麼。我很樂意幫助你。

+0

感謝您的承諾支持:)目前,我沒有使用Realm,但是我通過一個接口實現了數據庫操作,因此很容易替換ORM層。你能估計什麼時候UWP支持可用? – Nestor

+0

夠公平的。對不起,我目前無法提供時間表,但您可以在這裏跟蹤問題:https://github.com/realm/realm-dotnet/issues/509 –

0

這可能有點晚,但這可能對其他人有用。

我是MarcelloDB的作者,它是爲Xamarin和UWP構建的移動對象數據庫。 功能方面,它非常類似於Realm,除了它僅適用於.net平臺。

我認爲這兩個數據庫之間的共同抽象是非常可行的,所以一旦Realm支持UWP,您可以用Realm替換MarcelloDB。

相關問題