繁体   English   中英

WP7上的DatabaseSchemaUpdater错误

[英]DatabaseSchemaUpdater bug on WP7

我已经使用DatabaseSchemaUpdater实现了一些数据库版本控制逻辑,并发现了一个问题。

如果我执行此代码

 updater.DatabaseSchemaVersion = updater.DatabaseSchemaVersion + new Random().Next(10)+1;
 updater.Execute();

然后按“ 后退”按钮离开应用程序-一切正常。 架构版本已修改。

如果我按“ 开始”按钮离开,然后再次启动应用程序(在我看来,对于普通用户而言,这是普通情况)-没有更新。 该数据库具有以前的版本。

调用Dispose()可以解决该问题,但是我们使用单例DataContext对象,因此在这种情况下,这种方法会有点棘手。

https://www.dropbox.com/s/wfyvwvjd12wifgl/DBUpdTest.zip-测试项目-您可以简单地启动应用程序,并以不同的方式关闭并查看会发生什么(db ver是在文本框中编写的)。

问题是:这种行为正常吗? 停用并重新启动应用程序是否会破坏其他功能? 有什么办法可以解决此类问题(“处置”除外)?

在过去的几个小时中,我遇到了同样的问题,并且在Google上进行了大量搜索。 实际上,对我有帮助的唯一解决方案是在数据库上下文中使用using关键字。 之后,我重新创建了数据上下文。

// _dataContext is static. By checking for null I make sure that the database
// creation and migration is only done once during the app lifecycle
if (_dataContext == null)
{
    // get the context
    using (_dataContext = new WorkTimesDataContext(IsoStoreDatabasefile))
    {
        // do DB creation
        // do DB migration
    }
    // now that the context is disposed, recreate it
    _dataContext = new WorkTimesDataContext(IsoStoreDatabasefile);
}

尽管官方文档明确指出:“当应用程序进入逻辑删除状态时,数据库似乎没有正确更新,但官方文件明确指出:“调用该方法(执行)时,所有更改都作为单个事务提交到本地数据库, 包括版本更新 ”。

您缺少逻辑删除功能,可以将数据备份到隔离存储中。

在Windows Phone上使用数据时,这是非常需要的。 下面的链接应该足以使您了解它的工作方式以及如何轻松地将其实现到您的应用程序中。

墓碑视频

我遇到了同样的问题,因为我拥有WP7 SDK的测试版。 一旦我安装了非测试版,它就会修复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM