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>
复制代码

 

Nhibernate本来就支持批量删除,Nhibernate的删除的操作有4个重载的方法,
Delete(object obj),
Delete(string query),
Delete(string query,objetc value,NHibernate.Type.IType type),
Delete(string query,objetc[] values,NHibernate.Type.IType[] types),

后面三种方法都支持批量删除
如Delete(" from users where user_age >10"),就可以删除所有年纪大于10的用户,注意这是hql查询,users是实体对象的类名,而不是表名

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值