xamarin開發常見錯誤總結--數據庫被鎖定異常

1.1.1  數據庫鎖定錯誤

SQLite Error 5: 'database is locked'

1.1.1.1 概述

發生這個錯誤常見的一種原因是:數據庫訪問我們使用了多個上下文,並且不同的上下文環境嵌套使用。如下代碼所示:

 

1.1.1.2 原因分析

不同的數據庫上下文嵌套使用,有一個上下文使用了事務,而在這個事務中,又使用了另外了一個數據庫上下文訪問相同的庫。

上面這個截圖中的代碼,DeleteAudioAndGetTheirIds使用的是Dapper,而它被EF的事務上下文所包裹。所以當運行這段代碼時,必然發生數據庫鎖定錯誤。

1.1.1.3 解決方案

統一數據庫上下文訪問環境

1.1.1.4 總結

之後需要注意這種多上下文互相嵌套訪問的情況。因爲,單從代碼的邏輯上是沒有問題的。這就給我們定位錯誤帶來一定的困難。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章