2

在我的应用程序中,我想清除/清空我的 SQLite-DB 中的一个表(这是唯一的一个)。我正在用 C# 编程。_session 是 NHibernate.ISession 类型。这是我的代码:

字符串 queryFmt = "FROM {0}"; 字符串查询 = String.Format(queryFmt, typeName); _session.Delete(查询);
_session.Flush();

我的示例数据库包含超过 5000 个条目(s3db 文件大约 750KB 大)。Flush() 方法需要 6 分钟以上。(当我在 SQLite Administrator 中执行删除操作时,只需不到一秒钟。)

我怎样才能更快地清空桌子?

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 回答