Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NHibernate:什么是儿童课程?为什么和什么时候应该使用?_Nhibernate - Fatal编程技术网

NHibernate:什么是儿童课程?为什么和什么时候应该使用?

NHibernate:什么是儿童课程?为什么和什么时候应该使用?,nhibernate,Nhibernate,在ayende关于NHibernate中审计的评论中,提到需要使用子会话:session.GetSession(EntityMode.Poco) 据我所知,它和session.Flush将发出的SQL操作的顺序有关。(例如:如果我想在预插入事件中执行一些删除操作,但会话已经完成了删除操作,我需要某种方法将它们插入。) 但是,我没有找到有关此功能和行为的文档 问题: 我对儿童课程的理解正确吗 我应该如何以及在哪些情况下使用它们 他们在什么地方有记录吗 它们是否可用于会话“范围界定”? (例如:我

在ayende关于NHibernate中审计的评论中,提到需要使用子会话
session.GetSession(EntityMode.Poco)

据我所知,它和session.Flush将发出的SQL操作的顺序有关。(例如:如果我想在预插入事件中执行一些删除操作,但会话已经完成了删除操作,我需要某种方法将它们插入。)

但是,我没有找到有关此功能和行为的文档

问题:

  • 我对儿童课程的理解正确吗

  • 我应该如何以及在哪些情况下使用它们

  • 他们在什么地方有记录吗

  • 它们是否可用于会话“范围界定”?
    (例如:我打开主会话,它将保存一些数据,然后我从主会话创建了两个子会话。我希望两个子作用域将分开,但将共享主会话缓存中的对象。是这样吗?)

  • 他们是NHibernate的一等公民还是只是为了支持一些边缘案例

提前感谢您提供的任何信息。

Stefando

NHibernate不了解子会话,您可以重用现有会话或打开新会话

例如,如果您试图将同一实体加载到两个不同的会话中,则会出现异常

博客中提到它的原因是,在preupdate和preinsert中,您无法在会话中加载更多对象,您可以更改allready加载的实例,但不能导航到实例的关系属性

因此,在博客中需要打开一个新会话,因为我们想添加一个新的auditlog实体。因此,最终是事务(工作单元)管理数据