2

私のアプリケーションでは、SQLite-DB のテーブル (唯一のテーブル) をクリア/空にしたいと考えています。私はC#でプログラミングしています。_session はタイプ NHibernate.ISession です。これが私のコードです:

string queryFmt = "FROM {0}"; string query = String.Format(queryFmt, typeName); _session.Delete(クエリ);
_session.Flush();

サンプル DB は 5000 を超えるエントリで構成されています (s3db ファイルのサイズは約 750KB です)。Flush() メソッドは 6 分以上必要です。(SQLite Administrator で削除操作を実行すると、1 秒もかかりません。)

テーブルをより速く空にするにはどうすればよいですか?

4

2 に答える 2

2

hql クエリで ExecuteUpdate を使用する例を次に示します。

using(var session = sessionFactory.OpenSession())
{

    String hqlDelete = string.Format("delete {0} t",typename);
    int deletedEntities = session.CreateQuery( hqlDelete ).ExecuteUpdate();
    session.Close();
}
于 2009-09-16T06:44:27.647 に答える
0

構成でnhibをshow_sql=trueに設定すると、どのSQLが出力されますか?


応答後、行を一括削除していないため、nhibに非常に時間がかかっていることがわかります。

Ayendeには、ここでそれを説明する投稿があります。

于 2009-09-15T17:57:07.070 に答える