`

NHibernate批量删除数据的方法【转】

SQL 
阅读更多
方法一:Session.Delete()

这个方法是最常用的,一共有4个重载的方法

void Delete(object obj);

int Delete(string query)

int Delete(string query, object value, IType type);

int Delete(string query, object[] values, IType[] types);

这几个重载方法中,第一个方法是基于现有对象的删除操作,其余是使用query语句查询获得对象,再逐个删除的,如果使用批量删除时,效果不太理想

 

int Delete(string query, object[] values, IType[] types); 的用法如下:

DateTime start = new DateTime(2000,1,1);

DateTime end = new DateTime(2001,1,1);

Session.Delete("from OperLog operlog where operlog.LogTime between ? and ?"

, new object[] { start, end }

, new IType[] { NHibernateUtil.DateTime, NHibernateUtil.DateTime });

    Session.Flush();

 

 

方法二:Session. CreateSQLQuery()

ISQLQuery CreateSQLQuery(string queryString);

IQuery CreateSQLQuery(string sql, string returnAlias, System.Type returnClass);

IQuery CreateSQLQuery(string sql, string[] returnAliases, System.Type[] returnClasses);

这个方法是直接执行SQL语句的不需要Session.Flush,效率是最高的

 

ISQLQuery qry = Session.CreateSQLQuery("delete from operlog where logtime between :a and :b");

qry.SetParameter("a", start);

qry.SetParameter("b", end);           

qry.ExecuteUpdate();

 

但使用该方法后,之前Session缓冲区中已经载入的对象还在,需要额外处理。

 

分享到:
评论

相关推荐

    NHibernate-2.1.2.GA-bin NHibernate框架

    9. **批量操作**:对于需要大量数据操作的场景,NHibernate 提供了批量插入、更新和删除的优化策略。 10. **版本控制**:通过乐观锁定或悲观锁定机制,NHibernate 可以帮助处理并发控制,防止数据冲突。 这个...

    NHibernate demo

    NHibernate是.NET平台上的Java Hibernate的移植版,它提供了对关系数据库的强大抽象,允许开发者用.NET类来表示数据库中的表,并通过对象的方法来执行CRUD(创建、读取、更新、删除)操作。这样,开发者无需直接编写...

    Nhibernate连接Access的例子

    - 使用Session的BeginTransaction()、Commit()和Rollback()方法来管理事务,确保数据一致性。 9. **性能优化** - **缓存**:Nhibernate提供了一级缓存(Session级)和二级缓存(SessionFactory级),可配置缓存...

    CS和BS的Nhibernate

    - 批量操作:利用批处理功能批量插入、更新或删除数据。 通过学习和实践Nhibernate,开发者能够更高效地处理.NET应用中的数据库操作,同时提高代码的可维护性和可扩展性。在CSNhibernate.zip和Nhibernate.zip提供...

    NHibernate

    它提供了添加、更新、删除对象的方法,并且在事务中管理这些操作。 2.3 Transaction:事务管理是NHibernate的重要部分,它确保数据的一致性和完整性。通过Session的BeginTransaction、Commit和Rollback方法,可以...

    nhibernate与ibatis速度对比测试项目

    在这个项目中,我们可以通过执行相同的业务逻辑,但分别使用NHibernate和iBatis作为数据访问层,对比它们处理相同数量请求的时间消耗,从而评估它们的性能差异。 测试可能包括以下几个方面: 1. **插入性能**:比较...

    NHibernate In Action

    通过一个简单的示例项目来演示如何设置 NHibernate 环境,并完成基本的 CRUD(创建、读取、更新、删除)操作。 - **环境搭建**:指导读者安装必要的组件,配置 NHibernate 的运行环境。 - **第一个 NHibernate 应用...

    NHibernate自学学习笔记

    - 使用批处理:批量处理多个对象的保存、更新和删除操作,减少数据库连接开销。 - 合理使用懒加载:避免在不需要时加载大量数据。 - 避免N+1查询问题:通过一次查询获取关联数据,而不是多次单独查询。 九、高级...

    NHibernate2.0中文教程

    NHibernate 是一个开源的对象关系映射(ORM)框架,它为.NET Framework 提供了强大的数据持久化解决方案。在本教程中,我们将深入探讨NHibernate 2.0版本,这是一个广泛使用的版本,它引入了许多改进和新特性,以...

    NHibernate 3 Beginner's Guide

    - **批量更新/删除**:执行高效的大规模数据操作。 #### 性能优化与最佳实践 为了确保使用NHibernate的应用程序能够高效运行,需要注意以下几点: - **合理使用缓存**:正确配置一级缓存和二级缓存,避免不必要的...

    Nhibernate帮助文档

    3. **Session**:Session是Nhibernate的工作单元,它是与数据库交互的主要接口,负责对象的持久化操作,如保存、更新、删除和查询等。 二、Nhibenate配置 1. **配置文件NHibernate.cfg.xml**:这是Nhibernate的主要...

    NHibernate教程.rar

    3. 批量操作:利用Batch Size进行批量插入、更新和删除,减少数据库交互次数。 七、其他特性 1. 异步操作:支持异步编程,提高并发性能。 2. 持久化策略:包括懒加载(Lazy Loading)和立即加载(Eager Loading),...

    NHibernate中文帮组文档(2008.11月更新)

    NHIBERNATE - 符合.Net习惯的关系数据库持久化 NHibernate参考文档 2.0.0 -------------------------------------------------------------------------------- 目录 前言 1. 第一个NHibernate应用程序 1.1. ...

    NHibernate 3.0 经典教程

    - **批量操作**:提高数据插入、更新和删除的效率。 #### 三、案例分析 本书通过70个强大实用的示例菜谱,详细介绍了如何在NHibernate生态系统中使用各种解决方案: **1. 基础配置与设置** - 配置NHibernate的...

    NHibernate文档

    NHibernate是一款强大的对象关系映射(ORM)框架,主要用于.NET平台,它简化了数据库与应用程序之间的数据交互。这篇文档将引导你深入理解如何使用NHibernate,以及如何编写HQL(NHibernate查询语言)语句。 一、...

    Nhibernate使用讲解

    Nhibernate简化了数据库操作,消除了大量的SQL代码,并且提供了数据持久化的解决方案。在这个“Nhibernate使用讲解”中,我们将深入探讨其核心概念、事务管理、基本的CRUD操作以及数据加载策略。 **一、Nhibernate...

    Nhibernate例子

    Nhibernate支持批量操作,如批量插入、更新和删除,以及二级缓存,以提高性能。例如,使用批处理插入: ```csharp var batchSize = 20; foreach (var batch in userModules.Batch(batchSize)) { using (var tx = ...

Global site tag (gtag.js) - Google Analytics