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的新闻得到,然后删除掉此对象。
获取对象是没有问题的。就是删除不掉。
求解释。和解决方法。
打断点看过了的,里面是有值的,而且如果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();
加了 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()不能更新到数据库。请问是啥情况。的主要内容,如果未能解决你的问题,请参考以下文章