删除() - 操作后,NHibernate.ISession.Flush()需要很长时间

时间:2009-09-15 16:38:24

标签: nhibernate flush

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

string queryFmt =“FROM {0}”; string query = String.Format(queryFmt,typeName); _session.Delete(查询);
_session.Flush();

我的example-DB包含超过5000个条目(s3db文件大约750KB)。 Flush() - 方法需要超过6分钟。 (当我在SQLite管理员中执行删除操作时,只需不到一秒钟。)

如何更快地清空表格?

2 个答案:

答案 0 :(得分:2)

在hql查询上使用ExecuteUpdate 这是一个例子:

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

    String hqlDelete = string.Format("delete {0} t",typename);
    int deletedEntities = session.CreateQuery( hqlDelete ).ExecuteUpdate();
    session.Close();
}

答案 1 :(得分:0)

如果在配置中将nhib设置为show_sql = true,则输出什么sql?


在您的回复之后,您可以看到nhib花了这么长时间,因为它不是批量删除行。

Ayende有一个帖子解释它here.