我在商店里有一个WP8.0 Silverlight应用程序。它使用SterlingPhone作为DB。我在Windows Mobile 10 Insider预览版(v10.0.10536.1004)中下载了我的应用程序,似乎在退出应用程序后删除了数据。
我正在使用IsolatedStorageDriver:
Database = _engine.SterlingDatabase.RegisterDatabase<ItemsDatabaseInstance>(new IsolatedStorageDriver());
有人遇到过这种情况吗?我知道Sterling很老了,但我认为它应该继续在WM10上工作。
如果我必须更改为另一个数据库引擎,我会很感激建议(由于嵌套对象,我的数据模型使得使用Sqlite非常困难。)
编辑: 显然,Sterling无法找到现有数据库,因此每次重新启动应用程序时都会重新创建它。
答案 0 :(得分:0)
对于发现此帖有同样问题的任何人,问题在于Windows 10 Mobile上string.GetHashCode的更改行为。
Sterling在数据库的路径中使用数据库名称的哈希码。在Windows 10 Mobile上,行为已更改,每次重新启动应用程序时,都会计算不同的哈希值,并且找不到前一个数据库的路径更改。
要让您的应用再次运行,请从CodePlex获取SterlingDB代码并更改PathProvider类中的代码,在GetDatabasePath方法中,然后重新编译您的应用。您可以添加一个检查以查看您是否在WM10上运行,以便WP8上的用户继续使用旧数据库。
GitHub上较新版本的SterlingDB似乎不再使用哈希码,所以也应继续使用。