0

我在商店中有一个 WP8.0 Silverlight 应用程序。它使用 SterlingPhone 作为数据库。我在 Windows Mobile 10 Insider Preview 版本 (v10.0.10536.1004) 中下载了我的应用程序,似乎在我退出应用程序后数据已被删除。

我正在使用独立存储驱动程序:

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

有没有人遇到过这种情况?我知道 Sterling 已经很老了,但我认为它应该继续在 WM10 上工作。

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

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

隔离存储截图

4

1 回答 1

0

对于任何发现此帖子存在相同问题的人,问题在于 Windows 10 移动版上 string.GetHashCode 的行为发生了变化。

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

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

GitHub 上较新版本的 SterlingDB 似乎不再使用哈希码,因此也应该继续工作。

于 2016-02-11T15:36:09.957 回答