【问题标题】:Nhibernate throws "Could not initialize proxy - no Session" when called many times quicklyNhibernate 在快速调用多次时抛出“无法初始化代理 - 无会话”
【发布时间】:2011-09-06 07:17:30
【问题描述】:

我遇到了 NHibernate 默认获取行为的问题:

延迟获取

延迟获取让您决定在第一次命中数据库时加载了多少对象图,以及哪些 只有在首次访问关联时才应加载关联。 Lazy fetching 是一个基本概念 对象持久性和获得可接受性能的第一步。

定义来自:Nhibernate In Action,2008 年

问题:

例如,我有一个提交按钮,我点击了很多次。在服务器端,我通过导航对象图来检索对象,例如:

User us = new GetUserById(userId);
if (us.Address.Street != null)

一位用户在 DB Schema 上有一个地址。

第一次点击可以正常工作,但如果我更快地点击它会抛出异常: “无法初始化代理 - 没有会话。”休眠

这种行为有什么解决办法吗?

谢谢,

蒂托·莫赖斯

【问题讨论】:

  • 关闭会话后访问延迟加载的属性时会引发此错误。也许你有一个竞争条件,一个点击操作关闭另一个点击操作的会话?
  • 您需要更新问题以显示您如何管理打开/关闭会话。与之前的评论一样,这可能是解决您问题的关键。

标签: nhibernate session proxy initialization


【解决方案1】:

您可以使用急切加载。请参阅以下链接:

http://nhibernate.info/doc/howto/various/lazy-loading-eager-loading.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    相关资源
    最近更新 更多