NHibernate连接/阅读器从ajax上下文关闭

时间:2009-03-11 09:07:34

标签: jquery ajax nhibernate

当我使用JQuery进行ajax调用时,我在使用NHibernate时遇到了麻烦。

关于连接或读取器被关闭,我得到了不同的例外:

“读取器关闭时无效尝试调用读取”。

有人知道如何解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

检查您是否正确初始化连接,而不是在尝试阅读之前从.NET关闭它。

似乎你在尝试获取信息时尚未打开信息,或者你已经关闭了信息。

最后,您是否尝试过使用其他框架或XMLHttpRequest对象直接使用您的应用程序进行一些AJAX?如果没有,试一试。如果问题仍然存在,您可以确定问题出在服务器端。

答案 1 :(得分:0)

使用相同的参数完成调用,我真正可以告诉你的是一个基本的Linq to NHibernate调用,通过username == name获取一个雇员 - 其中name是传入的参数。

所以它只是:

返回Session.Linq()。Single(e => e ==“John”);

我在这一行上有一个断点并且它完美地工作,直到从使用JQuery.getJSON的calld的一个动作调用它

我还有其他类型的调用,在这种情况下它们似乎也失败了。

答案 2 :(得分:0)

protected object GetJsonUserWrong(string name) {
    var user = default(User);
    using(var session = this.SessionFactory.Open()) {
        user = session.Linq<User>().Single(e => e.Name == name);
    }
    //doing the serialization while the session is closed might not work
    //if NHibernate is using proxy objects, this can fail.
    return SerializeToJson(user);
}

protected object GetJsonUserRight(string name) {
    using(var session = this.SessionFactory.Open()) {
        //must do the serialization while the session is open
        return SerializeToJson(session.Linq<user>().Single(e => e.Name == name));
    }
}