如何使用NHibernate在一个请求期间保存然后更新同一个类实例?

时间:2011-07-07 20:28:05

标签: nhibernate entity save

我对NHibernate相对较新,我对此有疑问。 我在Controller的方法中使用此代码片段在我的MVC项目中:

MyClass entity = new MyClass 
                    {
                        Foo = "bar"
                    };

_myRepository.Save(entity);

....

entity.Foo = "bar2";
_myRepository.Save(entity);

第一次实体成功保存在数据库中。但第二次没有一个请求不会进入数据库。我在存储库中保存的方法只是:

public void Save(T entity)
{
  _session.SaveOrUpdate(entity);
}

如果能够在一次请求期间保存并更新此实体,我该怎么做?如果我在将实体保存到数据库之后添加_session.Flush();它可以工作,但我不确定,这是否正确。

由于

2 个答案:

答案 0 :(得分:3)

这是预期的行为。

  • 更改仅保存在Flush
  • Flush可以显式或隐式调用(请参阅9.6. Flush
  • 使用identity生成器(不推荐)时,会立即发送插入内容,因为这是返回ID的唯一方法。

答案 1 :(得分:2)

你应该使用交易 一些好的来源:herehere 另外,summer of nHibernate是我第一次开始使用nHibernate的方式。这是学习基础知识的非常好的资源。