NHibernate有时为完全相同的查询返回null

时间:2013-04-12 17:07:09

标签: nhibernate

我有一个使用NHibernate和FluentNHibernate的ASP.Net MVC 3站点。在大多数情况下,一切都运作良好。我最近连接了Elmah,当我查看日志时,有一些错误,其中似乎NHibernate间歇性地返回空数据用于应该返回数据的查询。

例如:

MyObject myObject = session.Query<MyObject>()
                            .Where(m => m.Id == myObjectId && m.UserId == userId)
                            .Single();

myObjectId从另一页上的链接传入控制器(即MyController/MyAction/1

userId从我知道存在的会话中检索到用户已登录。

在一种情况下,用户尝试点击两次链接但收到错误页面。我登录后,自己尝试了它并且它有效(NHibernate正确检索数据)

基于此,发生这种情况的原因是什么?这是我应该看的配置设置吗?

以下是有关该应用的更多信息:

  • 使用Asp.Net MVC 3
  • SQL Server 2008 R2
  • 使用CastleWindsor将ISession注入控制器的构造函数

谢谢!

1 个答案:

答案 0 :(得分:1)

  

基于此,发生这种情况的原因是什么?

我不是ASP.Net程序员,但可能有多种原因。猜测可能的原因并不是一个好策略。

您需要尝试有条不紊地进行调试,而不是猜测。我首先要更改代码,以便在出现问题时记录更多信息;例如myObjectIduserId的值,以及查询Where(m => m.Id == myObjectId)以查看对象是否存在以及对象的userId实际上是什么的结果。