NHibernate.ISession.Flush()在执行Delete()操作后花费了很长时间

NHibernate.ISession.Flush()在执行Delete()操作后花费了很长时间,nhibernate,flush,Nhibernate,Flush,在我的应用程序中,我希望清除/清空SQLite数据库中唯一的表。 我正在用C语言编程。U会话类型为NHibernate.ISession。这是我的密码: 字符串queryFmt=来自{0}; string query=string.FormatqueryFmt,typeName; _会话.删除查询; _会话。刷新 我的示例数据库由5000多个条目组成,s3db文件大约有750KB大。冲洗方法需要6分钟以上。当我在SQLite管理员中执行删除操作时,只需不到一秒钟的时间 如何更快地清空表?如果将n

在我的应用程序中,我希望清除/清空SQLite数据库中唯一的表。 我正在用C语言编程。U会话类型为NHibernate.ISession。这是我的密码:

字符串queryFmt=来自{0}; string query=string.FormatqueryFmt,typeName; _会话.删除查询; _会话。刷新

我的示例数据库由5000多个条目组成,s3db文件大约有750KB大。冲洗方法需要6分钟以上。当我在SQLite管理员中执行删除操作时,只需不到一秒钟的时间


如何更快地清空表?

如果将nhib设置为在配置中显示_sql=true,则输出什么sql

在您的响应之后,您可以看到nhib花费了很长时间,因为它没有批量删除行


Ayende有一篇帖子解释了它

在hql查询中使用ExecuteUpdate 下面是一个例子:

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

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

对于session.Delete…:NHibernate:选择logentry0.Id作为Id22,logentry0。消息作为Message22,logentry0。键入Type22,logentry0。类别作为Category22,logentry0。DateCreated作为DateCrea5_22,logentry0。Level作为Level22从日志logentry0为Level22。Flush:NHibernate:Delete from其中Id=@p0@p0=1 NHibernate:从日志中删除,其中Id=@p0@p0=2。。。NHibernate:从日志中删除,其中Id=@p0@p0=99 NHibernate:从日志中删除,其中Id=@p0@p0=100一个小改动:它是session.CreateQuery。。。而不是hqlDelete.CreateQuery。。。