NHibernate不会插入记录

时间:2010-06-03 18:34:30

标签: sql-server nhibernate insert

我的应用程序现已有4年多的历史,在我们的最新部署中表现出一些奇怪的行为。该应用程序使用nHibernate进行所有插入/更新/选择等。我们目前正在使用.NET 2.0和nHibernate 1.2(我知道,我们需要升级)

此部署位于Windows 2008 Server x64,IIS 7.5上 - 到目前为止我看到的是应用程序运行,但无法在数据库中插入或更新记录 - 到目前为止,读取似乎很好,但写入是一个问题。一些写入实际上工作,插入一些小表,但大多数甚至从未进入数据库。

使用SQL事件探查器,插入/更新永远不会进入服务器,并将log4net转换为DEBUG,并且show_sql为true - 显示select语句,但插入/更新语句根本不会进入日志,并且永远不会出现在服务器上。

更奇怪的是,应用程序似乎没有注意到这一点 - commandandclose运行无例外(使用httpmodule查看打开会话),域对象返回uuid生成等,但永远不会被持久化。< / p>

当然需要进行升级,但我不愿意在部署期间尝试升级,并且没有时间准确测试应用程序。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

我的猜测是默认的ISession FlushMode已从Auto更改为Never或Commit。永远不会意味着当应用程序调用Flush()时会话将刷新;提交意味着会话将在提交事务时刷新。

答案 1 :(得分:1)

退出当前部署并返回之前的状态。然后寻找某人犯的错误。如果它曾经插入,现在没有,那么你当前的代码有问题。如果它没有创建插入/更新语句,那么我首先要看它们应该创建的位置。当前的deplyment是否实际插入记录或在dev中更新它们?有没有人测试过,或者你是否依赖于它没有的事实;是否会出现错误?如果它在开发中工作并且在prod中不起作用,我会看看dev和prod之间的环境差异。

答案 2 :(得分:0)

两个好的答案,问题出在部署中。为IIS6设置了web.config,并且部署到IIS7没有在用于提交事务的视图HttpModule中正确设置打开会话。将管道模式从Integrated更改为Classic解决了这个问题。