NHibernate 中删除数据的几种方法
2010-06-13 15:56
399 查看
今天下午有人在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>
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 中删除数据的几种方法
- NHibernate 中删除数据的几种方法
- 总结NHibernate 中删除数据的几种方法
- NHibernate 中删除数据的几种方法
- NHibernate 中删除数据的几种方法
- ArcEngine数据删除几种方法和性能比较
- ArcEngine数据删除几种方法和性能比较[转]
- 教你几种在SQLServer中删除重复数据方法
- ArcEngine数据删除几种方法和性能比较 转载的
- 技巧:删除表中重复数据的几种方法
- MySql 几种查询相同字段中相同数据,及删除相同字段的相同数据的方法
- ArcEngine数据删除几种方法和性能比较
- db2中删除数据的几种方法
- Oracle删除重复数据的几种常用方法
- 几种在SQLServer中删除重复数据方法
- ArcEngine数据删除几种方法
- Entity Framework 4中删除所有数据行的几种方法
- SQL Server中删除表中重复数据的几种方法
- 教你几种在SQLServer中删除重复数据方法