2010-03-11 80 views
5

我聽說最好在應用程序啓動時打開一個連接,並在應用程序關閉時關閉它。Windows移動精簡版框架SqlCeConnection

有多個連接會發生什麼樣的問題?

那裏的任何文章,它是最佳實踐有一個連接?

你對sql ce有什麼經驗?

回答

2

在我們的SQL CE 3.5/Compact Framework 3.5應用程序中,我們在啓動時打開連接並保持打開狀態,直到應用程序關閉。幾乎應用程序中的每個用戶交互都需要數據庫,並且保持連接打開比按需打開和關閉要快。

所有數據更新都在事務中執行。我們Commit使用CommitMode.Immediate選項的交易。這可確保數據更改立即刷新到文件中,從而最大限度地減少數據丟失的可能性。

2

這真的取決於。爲了提高性能,如果始終存在與數據庫的實時連接,則SQL CE效果最佳,因爲每次連接時引擎都不必構建所有內容。

然而,只有一個連接會導致數據緩存到文件,並且在發生災難性故障時數據丟失或損壞的可能性較高。

我傾向於在應用程序啓動時打開與數據庫的「虛擬」連接,並且該連接始終打開,但很少或從未實際使用過。如果你願意的話,這可以使發動機「準備就緒」。對於實際的數據訪問,我使用單獨的連接並根據我正在進行的活動來管理狀態,通常將其保留在多個查詢中(假如您願意,則爲僞事務),但不會將其無限期打開。

+0

您可以通過兩種方式更改惰性沖洗行爲。當你在'SqlCeTransaction'上調用'Commit'時,你可以'CommitMode.Immediate'立即刷新事務(http://msdn.microsoft.com/en-US/library/esdw1h9d.aspx)。連接字符串上還有一個'flush interval'選項(http://msdn.microsoft.com/zh-cn/library/system.data.sqlserverce.sqlceconnection.connectionstring.aspx)。 – 2010-03-11 21:34:16

+0

你是什麼意思的「準備」? – pdiddy 2010-03-11 22:22:31

+1

我在找這方面的任何公開文檔,但我能找到的是來自SQL CE團隊開發人員的私人電子郵件。基本上,到數據庫的第一個連接在內部初始化一些對象,而其他每個連接都使用這些對象。創建並保持一個連接會建立這些對象以供所有後續連接使用(從而提高性能)。 – ctacke 2010-03-11 22:25:01