2017-07-02 1 views
0

SQLite.Net-PCLをバッキングストアとして使用している自動テストがいくつかあります。私の代わりに実際のファイルを使用しての、あなたが渡すことができることがわかった「:メモリ:」接続文字列のためのパスとして、そのようなインメモリデータベースを作成するために:私の驚きにSQLite.NETのメモリ(:memory :)データベースファイルベースのデータベースよりずっと遅い

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

を、この通常のファイルを使用するよりもはるかに遅いです。ファイルで約100msかかるテストでは、メモリ内で1分以上かかります。どうして?

それだけでなく、私はインメモリ・データベースに切り替えると私のテストの倍数が突然失敗開始 - ほとんどは、テーブルに関連すると思われる

を作成していないされている決して私は本当に[ファイル]を使用するように強制アム私のunittestsのベースのデータベースですか?

答えて

0

接続が閉じられると、メモリ内のデータベースは消滅します。

したがって、すべてのテストで新しいデータベースが作成され、すべてのテーブルを再作成する必要があります。

+0

これはパフォーマンスの低下の原因だとは思わない。私はすべてのテストのためにファイルベースのデータベースをクリアして再作成します – user1202032

関連する問題