NHibernate的Session.delete()不能更新到数据库。请问是啥情况。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NHibernate的Session.delete()不能更新到数据库。请问是啥情况。相关的知识,希望对你有一定的参考价值。

public ISession Session()

var cfg = new Configuration().Configure();
ISessionFactory factory = cfg.BuildSessionFactory();
ISession session = factory.OpenSession();
return session;

public ITransaction Transaction()

return Session().BeginTransaction();

public void Delete(news entity)

Session().Delete(entity);
Session().Flush();
Transaction().Commit();

这是在DAL 层里面的方法。
然后页面是这样:
protected void btndel_Click(object sender, EventArgs e)

var entity = NewsService.Get(3);
NewsService.Delete(entity);


NewsService是BasePage里面的属性,这个不用管。
把编号为3的新闻得到,然后删除掉此对象。
获取对象是没有问题的。就是删除不掉。
求解释。和解决方法。

参考技术A 你的entity中可以获取到值吗?可以下个断点看下追问

打断点看过了的,里面是有值的,而且如果entity是null的话,Delete的时候是会报错的。

追答

这个NewsService到底是什么东西呢?貌似只能是这个有问题,你可以看看

还有
public void Delete(news entity)

Session().Delete(entity);
Session().Flush();
Transaction().Commit();

我觉得改成这样好点
public void Delete(news entity)

ITransaction tx= Transaction();//在删除之前开启事务
Session().Delete(entity);
//Session().Flush();这个就没什么必要了
tx.Commit();

参考技术B commit()了木有追问

加了 Transaction().commit() 还是不能更新到数据库。

Hibernate session 方法总结

1  session.save(Object object); 增加
2  session.update(Object object);修改
3  session.saveOrUpdate(Object object);主键字段有值则修改,无则新增。
4  session.update(Object object);
5  session.delete(Object object);删除
6  session.createQuery(String HQL);按HQL语句查询
7  session.createCriteria(Class entityClass);按实体进行QBC查询 
8  session.load(Class entityClass,Serialize id); 根据id查询,延迟加载。
9  session.get(Class entityClass,Serialize id); 根据id查询,立即加载。

以上是关于NHibernate的Session.delete()不能更新到数据库。请问是啥情况。的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点#RavenDB起步--客户端API

Hibernate session 方法总结

Hibernate中session常用方法

如何删除或移除 Session 变量?

Flask的ORM方法

Hibernate__hql语句