我的Windows Phone 8应用程序中有数据库。我想知道,访问它的“最佳”做法应该是什么。
在上一个应用程序中,我使用了名为“AccessingDatabse”的静态方法,当我需要对它执行某些操作时,我只调用AccessingDatabase.savePlayer(player)
之类的方法。优点是易于访问和简单处理更多请求(我有更多线程访问数据库):
public static AutoResetEvent OperationOnDatabase = new AutoResetEvent(true);
public static RefreshMessages()
{
try
{
OperationOnDatabase.WaitOne();
//dosomething
}
finally
{
OperationOnDatabase.Set();
}
}
有更好的方法吗?
我可以 - 例如 - 在MainViewModel
中保存数据库上下文并使用
ServiceLocator.Current.GetInstance<MainViewModel>().MyDatabase
想法?
答案 0 :(得分:1)
嗯,更好的解决方案是允许通过正式存储库访问您的数据库,并使用DI框架在需要它的代码中注入存储库。通过这种方式,您可以轻松地进行协调,同时您不会拥有使用静态方法时的硬依赖性,并且可以极大地提高使用存储库的类的可测试性。
如果DI太重,只需手动将存储库注入ctor(虽然这会导致某些地方的可测试性降低)。