【发布时间】:2016-11-09 10:51:08
【问题描述】:
我打算创建一个具有本地数据存储功能的 Xamarin.Forms 项目。
为了存储数据,我想使用可用于 Xamarin.Forms 项目的新 Realm 库 - 除了它不支持作为 Xamarin.Forms 项目一部分的 Windows Phone 项目.
我还不想放弃它,所以我在寻找可以做的选择。
由于 Realm 支持 Android 和 iOS,我会在这些项目中使用它们,并以某种方式隐藏数据库类的使用,使用如下接口或抽象类:
在 PCL 项目中,我会有这样的界面:
public interface IDBOperations<T>
{
List<T> GetData();
void SaveData(T input);
}
然后将它与DependencyService 一起使用,如下所示:
DependencyService.Get<IDBOperations>().SaveData(myModel);
在另一个 PCL 项目中,我会有一个像这样的 model:
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 而忘记这一点?
【问题讨论】:
标签: c# xamarin.forms realm