Nhibernate不在Win Server 2008上更新级联关系

时间:2010-08-30 11:44:45

标签: nhibernate windows-server-2008 nhibernate-cascade

我们正在使用NHibernate和Fluent映射来构建WebForms应用程序。

在我们的模型中,我们与References集合有一个简单的Cascade.All()关系。当我们保存实体时,NH按预期运行,1)保存引用的实体,2)更新设置子键的父实体。

将此相同版本部署到我们的生产服务器(Win Server 2008)并将应用程序指向同一数据库会产生不同的输出。 NH 1)保存引用的实体和..而且......就是这样,没有其他事情发生!!

我知道我们的测试和生产环境应该是相同的等等。但是我们现在正在部署,而我根本无法弄清楚这是如何发生的。

在Win 2008 Server中有关于程序集权限或类似问题的NH是否存在任何已知问题?看起来代理由于某种原因无法正常工作,但我真的不知道为什么!

编辑1:分析NH日志文件我发现NH没有注意到Win Server 2008中引用的属性发生了变化。为什么?不知道,但它看起来越来越像代理问题。

非常感谢任何帮助。

菲利普

1 个答案:

答案 0 :(得分:0)

我终于找到了导致问题的原因。 NH没有更新关系,因为它没有涉及这些陈述的交易。

在初看起来看起来不合逻辑,但是在其他情况下,如果您打开一个事务,NH只能正常运行(例如:NHibernate FlushMode Auto Not Flushing Before Find)。我们已经在另一个项目中遇到过这种情况,理论也适合。

但是Windows Server 2008怎么样?实际上,问题出在我们的IIS 7. web.config文件中。当我们使用OpenSessionInView设计的自动事务控制时,我们注册了一个httpModules项。但是在IIS 7中,我们必须注册一个modules项,但我们没有。由于它没有配置,我们没有交易,没有交易,事情就不起作用。

经验教训#1:在使用NHibernate时,交易是必须的。 经验教训#2:永远不要禁用IIS兼容性消息(为什么有人这样做?)。

菲利普