NHibernate 中删除数据的几种方法

今天下午有人在QQ群上问在NHibernate上如何根据条件删除多条数据,于是我自己就写了些测试代码,并总结了一下NHibernate中删除数据的方式,做个备忘。不过不能保证囊括所有的方式,如果还有别的方式,请园友踊跃提出,我补充上去。

 

1. 使用Session.Delete(T t) 方法

使用这个方法,需要先从数据库中获取实体T或者直接new T() Id赋值,然后才能调用 Session.Delete(T)

    A var session = NHibernateSession.Current;  //自己写的一个获取Session的方法

          var t = seesion.Get<Article>(999);

          session.Delete(t); 

    B:  var session = NHibernateSession.Current;

         var t = new Article{ Id = 999};

         session.Delete(t); 

 

2.  使用Seesion.Delete(string query) 方法

    var session = NHibernateSession.Current;  

    var hql = "from Article Where ArticleId = 999";

    session.Delete(hql) ;

 

3. 使用IQuery.ExecuteUpdate() 方法 

    var session = NHibernateSession.Current;  

    var hql = "Delete Article Where ArticleId = 999";

    session.CreateQuery(hql).ExecuteUpdate();

 

4. 使用ISQLQuery.ExecuteUpdate() 方法

    var session = NHibernateSession.Current;

    var sql = "Delete from Articles Where ArticleId = 999";

    session.CreateSQLQuery(sql).ExecuteUpdate();

 

5. 使用Named Query 

   var session = NHibernateSession.Current;

   session.GetNamedQuery("DeleteArticleUseSQLNamedQuery").ExecuteUpdate();  

   session.GetNamedQuery("DeleteArticleUseHQLNamedQuery").ExecuteUpdate(); 

 

  NamedQuery.hbm.xml :

  <?xml version="1.0" encoding="utf-8" ?>

复制代码
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
    
<sql-query name="DeleteArticleUseSQLNamedQuery">
        Delete from Articles Where ArticleId = 999
    
</sql-query>

    
<query name="DeleteArticleUseHQLNamedQuery">
        Delete Article Where ArticleId = 999
    
</query>
</hibernate-mapping>
复制代码

 

 

 

posted @   四眼蒙面侠  阅读(1290)  评论(1编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示