总结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
>

总结NHibernate 中删除数据的几种方法的更多相关文章
- NHibernate 中删除数据的几种方法
今天下午有人在QQ群上问在NHibernate上如何根据条件删除多条数据,于是我自己就写了些测试代码,并总结了一下NHibernate中删除数据的方式,做个备忘.不过不能保证囊括所有的方式,如果还有别 ...
- MySQL中删除数据的两种方法
转自:http://blog.csdn.net/apache6/article/details/2778878 1. 在MySQL中有两种方法可以删除数据: 一种是delete语句,另一种是trunc ...
- 关于iOS去除数组中重复数据的几种方法
关于iOS去除数组中重复数据的几种方法 在工作工程中我们不必要会遇到,在数组中有重复数据的时候,如何去除重复的数据呢? 第一种:利用NSDictionary的AllKeys(AllValues)方 ...
- php获取数组中重复数据的两种方法
分享下php获取数组中重复数据的两种方法. 1,利用php提供的函数,array_unique和array_diff_assoc来实现 <?php function FetchRepeatMem ...
- ArcGIS Engine中删除要素的几种方法总结
转自原文 ArcGIS Engine中删除要素的几种方法总结 /// <summary> /// 通过IFeature.Delete方法删除要素 /// </summary> ...
- PHP从数组中删除元素的四种方法实例
PHP从数组中删除元素的四种方法实例 一.总结 一句话总结:unset(),array_splice(),array_diff(),array_diff_key() 二.PHP从数组中删除元素的四种方 ...
- react在router中传递数据的2种方法
概述 不传递数据叫什么单页面应用,渲染模块还需要http请求算什么单页面应用. 本文总结了react-router4中使用BrowserRouter时传递数据的两种方法,供以后开发参考,相信对其他人也 ...
- ASP.NET中GridView控件删除数据的两种方法
今天在用GridView控件时,发现了一个问题,就是使用GridView控件在删除数据时的问题.接下来我们通过模板列方式和CommandField方式删除某条数据讲解下两者之间的区别. 方式一:通 ...
- js删除数据的几种方法
js 删除数组几种方法 var arr=['a','b','c']; 若要删除其中的'b',有两种方法: 1.delete方法:delete arr[1] 这种方式数组长度不变,此时arr[1]变为u ...
随机推荐
- 条码的种类(types of barcode)
条码基本上分为两大类:一维条码(1D Barcode)及二维条码(2D Barcode). 一维条码(1D Barcode) 所谓一维条码,简单的说就是条码只能横向水平方向列印,其缺点是储存的资料量较 ...
- 解析request的反馈信息
Map<String,String> params = new HashMap<String,String>(); Map requestParams = request.ge ...
- eclipse @ 注释为何一写就报错
以前一直奇怪,为什么eclipse自动生成的的代码中的@注释不会报错,而我直接写@就会报错 原因其实很简单: eclipse会检查@注释的位置 举个例子:写@Override,直接写会报错,但如果你继 ...
- git pull 出错 fatal: Could not read from remote repository.Please make sure you have the correct access rights.and the repository exists.
Warning: Permanently added the RSA host key for IP address '192.30.252.131' to the list of known hos ...
- poj 1936 All in All(水题)
题目链接:http://poj.org/problem?id=1936 思路分析:字符串子序列查找问题,设置两个指针,一个指向子序列,另一个指向待查找的序列,查找个字符串一次即可判断.算法时间复杂度O ...
- 1369 - Answering Queries(规律)
1369 - Answering Queries PDF (English) Statistics Forum Time Limit: 3 second(s) Memory Limit: 32 M ...
- iOS中的图像处理(三)——混合运算
有时候,单独对一张图像进行处理是很难或者根本达不到我们想要的效果的.一个好的滤镜效果的诞生,往往要经过很多复杂步骤.细致微调.图片应用效果观察以及很多图层叠加. 我在JSWidget上发现了一些常用混 ...
- ceph源码之一
转自于:http://blog.csdn.net/changtao381/article/details/8698935 一.概述: 其结构如下:在src 里, 网络通信: msg 里面 包括了网 ...
- C#学习之在辅助线程中修改UI控件----invoke方法
Invoke and BeginInvoke 转载地址:http://www.cnblogs.com/worldreason/archive/2008/06/09/1216127.html 在Invo ...
- ios多视图开发中:xib与UIViewController的关联
个人感觉ios中的UIViewController和xib文件,分别相当于android的Activity 和Layout文件 当时两者的关联比android稍微复杂些. ios上分别新建的UIVie ...