我对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();
它可以工作,但我不确定,这是否正确。
由于
答案 0 :(得分:3)
这是预期的行为。
Flush
Flush
可以显式或隐式调用(请参阅9.6. Flush)identity
生成器(不推荐)时,会立即发送插入内容,因为这是返回ID的唯一方法。答案 1 :(得分:2)
你应该使用交易 一些好的来源:here和here 另外,summer of nHibernate是我第一次开始使用nHibernate的方式。这是学习基础知识的非常好的资源。