NHibernate 批量删除

参照案例下载:/Files/liuxiaojun/LXJ.NHibernate.Demo.rar

 

场景描述:

Users,UserProfiles

删除一个User时,连带删除此User拥有的Profile

 

NHibernate的批量删除可以采用两种方式:

1、先把要删除的对象查询出来,然后循环对查询出的对象集合进行删除,代码如下:

复制代码
session.Delete(exists_user);

IList
<UserProfileInfo> profiles = (from p in session.Query<UserProfileInfo>()
                                   
where p.UserProfilePK.USER_ID == user_id
                                   select p).ToList();
foreach (UserProfileInfo profile in profiles)
{
    session.Delete(profile);
}
复制代码

 

 

2、使用session.Delete(string query, object value, global:NHibernate.Type.IType type)重载方法,代码如下:

session.Delete(exists_user);

//批量删除Profiles
session.Delete(" from UserProfileInfo p where p.UserProfilePK.USER_ID = ? ", user_id, NHibernateUtil.String);

 以上语法为HQL语法,里面的 UserProfileInfo 不是表名称,而是我们的持久化类对象。

 

注意:如果同一事务中,批量删除时还有后续的插入操作,那么需要在删除结束后就调用 session.Flush() 来提交语句

posted on 2012-05-07 22:06  HOT SUMMER  阅读(1896)  评论(0编辑  收藏  举报

导航