2017-07-02 75 views
0

我有一些使用SQLite.Net-PCL作爲後備存儲的自動化測試。我發現,而不是使用一個實際的文件,你可以通過在「:記憶:」作爲連接字符串的路徑,創建一個內存數據庫,像這樣:SQLite.NET內存(:內存:)數據庫比基於文件的數據庫慢很多

public class MyRepositoryService : SQLiteAsyncConnection 
{ 
    public MyRepositoryService() 
     : base(() => new SQLiteConnectionWithLock(
       new SQLitePlatformGeneric(), 
       new SQLiteConnectionString(
        ":memory:", 
        false) 
       )) 
    { 
    } 
} 

出乎我的意料,這比使用普通文件慢得多。在文件中需要大約100ms的測試需要1分鐘以上的內存。爲什麼?

不僅如此,但我的測試多突然開始時,我切換到內存數據庫失敗 - 大部分似乎與永遠不會被創建

表我是真的被迫使用一個文件 - 基於數據庫爲我的unittests?

回答

0

當連接關閉時,內存數據庫會消失。

因此,每個測試都會創建一個新的數據庫,並且必須重新創建所有表。

+0

我不認爲這是性能下降的原因。我也爲每個測試清除並重新創建基於文件的數據庫 – user1202032