您的位置:首页 > 其它

NHibernate 中删除数据的几种方法

2013-03-13 10:18 288 查看
今天下午有人在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>

转载于:http://www.cnblogs.com/NickYao/archive/2010/06/13/1757847.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: