3
|
Seth Petry-Johnson · 技术社区 · 15 年前 |
![]() |
1
2
毫无疑问,选择1。这不是违反直觉,而是NH的工作原理。使用nh检索的对象是持久的,刷新会话时将保存更改。调用exict会使对象成为暂时的,这正是您想要的行为。 您没有提到它,但是另一个选项可能是使用手动或提交flushmode。 |
![]() |
2
0
使用isvalid(或类似的)方法验证传递给它的对象,如果失败,它可以发布validationfailed事件。然后,当您的请求完成而不是调用会话的flush时,您可以发布一个requestend事件。然后可以有一个处理程序同时侦听requestEnd事件和validationFailed事件-如果有validationFailed事件,则不刷新会话,但如果没有,则刷新会话。
|
![]() |
3
0
正如莫里西奥和杰米在他们的回答/评论中所指出的那样,要准确地回答问题并不容易(可能也不可取)。nh返回持久对象,因此 将这些对象暴露给控制器意味着控制器负责将它们作为对象处理 . 我想使用延迟加载,因此暴露分离实例不起作用。 选项4:引入一个新模式,提供所需的语义 这个问题的重点是,我将使用手动滚动的活动记录(如dal)向现有项目介绍nh+存储库。我希望编写的nh代码使用类似于遗留代码的模式。
我创建了一个名为
这个
在新罕布什尔州的一个新建项目中,我认为最好使用选项1,正如杰米在他的回答中指出的那样。但我认为选项4是一个很好的方法,可以在已经使用类似模式的遗留项目上引入nh。 |