2015-10-29 57 views
0

我在商店中有一个WP8.0 Silverlight应用程序。它使用SterlingPhone作为数据库。我在Windows Mobile 10内幕预览版(v10.0.10536.1004)中下载了我的应用程序,似乎在我退出应用程序后数据被删除。Sterling DB Windows mobile 10支持

我使用IsolatedStorageDriver:

Database = _engine.SterlingDatabase.RegisterDatabase<ItemsDatabaseInstance>(new IsolatedStorageDriver()); 

有没有人遇到这种情况?我知道斯特林很老,但我认为它应该继续在WM10上工作。

如果我必须更改为另一个数据库引擎,我会很感激建议(由于嵌套对象,我的数据模型使得使用Sqlite非常困难)。

编辑: 显然,Sterling无法找到现有的数据库,因此每次重新启动应用程序时都要重新创建它。

Isolated storage screenshot

+0

你能解决这个问题吗?我与Windows 10 Mobile上的WP8.0应用程序有同样的问题。 –

回答

0

对于任何人谁发现这个职位有相同的问题,问题的关键在于改变行为string.GetHashCode在Windows 10移动。

Sterling在数据库的路径中使用数据库名称的哈希码。在Windows 10 Mobile上,行为发生了变化,每次重新启动应用程序时,都会计算出不同的散列值,并且找不到路径更改为以前的数据库。

要让您的应用程序再次运行,请从CodePlex获取SterlingDB代码,然后在GetDatabasePath方法中更改PathProvider类中的代码,然后重新编译您的应用程序。您可以添加一个检查来查看您是否在WM10上运行,以便WP8上的用户继续使用旧数据库。

GitHub上较新版本的SterlingDB似乎不再使用散列代码,所以也应该继续工作。