簡體   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