我在哪里可以找到NHibernate ISession.Persist()的文档?

时间:2011-01-17 18:51:00

标签: nhibernate isession

NHibernate的ISession公开了一个带有两个重载的方法Persist()。我无法在任何地方找到有关此方法的文档。在http://nhibernate.info/doc/nh/en/index.html上的NHibernate参考资料中甚至没有提到它。

这种方法是否已弃用,还是会被弃用?什么时候应该使用?它与SaveOrUpdate()相比如何?

任何指针都会非常感激。

1 个答案:

答案 0 :(得分:4)

此帖子http://opensource.atlassian.com/projects/hibernate/browse/HHH-1273的最后一条评论非常清楚:

  

persist()定义明确。它成了一个   瞬态实例持久化。   但是,它并不能保证   标识符值将分配给   持久化实例,   分配可能发生在同花顺   时间。规范没有说,哪个   是我用persist()的问题。

     

persist()也保证它会   如果它不执行INSERT语句   在交易之外被称为   边界。这很有用   与...长期对话   扩展的会话/持久化上下文。

     

需要像persist()这样的方法。

     

save()不保证一样,它   返回一个标识符,如果是   必须执行INSERT才能获得   标识符(例如“身份”生成器,   不是“序列”),这个INSERT发生了   不管你是不是立刻   交易内部或外部。   这在长期运行中并不好   与扩展的对话   会话/持久化上下文。

从我从其他来源收集的内容看来,具有cascade =“persist”的实体将在调用时级联,而不是在刷新时级联。这也许非常有用。