【发布时间】:2011-12-27 04:59:09
【问题描述】:
我使用 DatabaseSchemaUpdater 实现了一些数据库版本控制逻辑并发现了一个问题。
如果我执行这段代码
updater.DatabaseSchemaVersion = updater.DatabaseSchemaVersion + new Random().Next(10)+1;
updater.Execute();
并通过返回按钮离开申请 - 一切正常。架构版本已修改。
如果我按 开始 按钮离开,然后再次启动应用程序(在我看来,这对于普通用户来说是常见的情况)- 没有任何更新。数据库有以前的版本。
调用 Dispose() 将解决该问题,但我们使用单例 DataContext 对象,因此这种方法在这种情况下会有点笨拙。
https://www.dropbox.com/s/wfyvwvjd12wifgl/DBUpdTest.zip - 测试项目 - 您可以简单地启动应用程序,然后以不同的方式关闭,看看会发生什么(db ver 写在文本框中)。
问题是:这种行为正常吗?再次停用和启动应用程序会破坏其他东西吗?有没有办法解决这些问题(处置除外)?
【问题讨论】:
-
为什么不为更新程序使用新的 DataContext?并用“使用”来称呼它
-
当然,我们可以做到。但我会说这是一个黑客。并且没有记录在任何地方。很高兴了解该问题的性质。
标签: database windows-phone-7 sql-server-ce versioning