问题标签 [isession]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1684 浏览

c# - NHibernate 按类型驱逐而不是按实例驱逐

我正在迁移这样的应用程序:

我不想做这样的事情:

可能吗?怎么样?,谢谢

0 投票
2 回答
62 浏览

nhibernate - 在 nhibernate 中使用 SaveOrUpdate 方法时有没有办法找到保存的项目?

在休眠中使用 SaveOrUpdate 方法时有没有办法找到保存的项目。基本上,我需要知道一个项目是刚刚更新还是实际插入到一个会话中。

谢谢。

0 投票
2 回答
415 浏览

asp.net-mvc - NHibernate ISession:异常后没有任何东西可以持久化

我对 NHibernate 有疑问ISession。当我尝试将错误保存到数据库中时(例如,在 XYZ col 上保存具有重复键的实体)并回滚TransactionISession实例进入 BROKEN/INVALID 状态,此后不会保留任何记录,并且每次都会NHibernat引发另一个异常,告诉我第一次问题。

我使用过类似的 ISession 方法,Flush, Clear, Close但我的问题存在。另一种方法是请求另一个ISession实例,ISessionFactory但是当我使用它时,另一个奇怪的问题:illegal attempt to associate a collection with two open sessions.

如何在不重新请求另一个 ISession 实例的情况下恢复 ISession 实例ISessionFactory

提前致谢 :)

0 投票
1 回答
610 浏览

nhibernate - NServiceBus 3.2 和子容器

我有 NServiceBus (3.2.2) 设置,使用 Castle Windsor 作为它的构建器,我也在使用 NHibernate。我遇到的问题是,在我的处理程序中,如果我有多个需要 NHibernate 会话的存储库,它们最终会得到不同的会话!

NServiceBus 文档指出容器内的任何瞬态实例都将被视为单例实例。我的 NHibernate 会话也包含在一个工作抽象单元中。

下面是使用 NHibernate 设置 NServiceBus 的代码:

UnitOfWorkInstaller有点像:

因此,当需要 NHibernate 会话时,它会使用UnitOfWorkFactory. 我尝试将 'current_session_context_class' 属性放在 NHibernate 配置中的 'thread_static' 中,但它不起作用。

为什么我的 NServiceBus 处理程序中有不同的工作单元?

0 投票
1 回答
463 浏览

nhibernate - 适当的会话(RavenDB/NHibernate)处置 - IoC 和 Web 应用程序

我正在使用 StructureMap 并且我已经为 ISession 配置了HybridHttpOrLocalThreadStorage生命周期。根据请求创建新会话并将其注入控制器。

现在,我的问题是关于处置。我已经阅读了许多介绍不同方法的文章。有些人在控制器中执行此操作,有些在存储库中,有些在 http 模块中,其他人在Application_EndRequest()处理程序中执行。批评的范围从违反 SRP 到“创建对象的人应该负责其处置”等等。

所以底线是:

  • 常见的方法是手动处理这些会话 - 为什么?我已经配置了我的容器来管理特定对象的生命周期。它(即 IoC)不应该为我管理它吗?
  • 可供处置的选项是否以Application_EndRequest()“最佳”方式处理?

例如,这篇文章详细解释了一种可用的方法,但文章本身已有 2.5 年的历史。也许新版本的 StructureMap 会使大部分实现过时?

0 投票
1 回答
1124 浏览

wcf - 工厂被废弃,不能再使用。NHibernate设施

三天来,我一直在尝试用 Castle 和 wcf 来解决这个 NHibernatefacility 问题,这真的令人沮丧。

在解决了十几个错误之后,我来到了这个看起来很明显但我无法解决的错误。

这是我 global.asax 的 Application_Start

这适用于第一个请求。之后,它出现了这个错误。

工厂被废弃,不能再使用。对象名称:“这个”。

错误发生在我的用户存储库中的这一行

我感觉这与生活方式有关。我尝试了多种组合但不成功。我现在不知道该怎么办。我带着所有的设施(应该让生活更轻松)进入了这座城堡,由于缺乏文档,这真的很复杂。我还没有找到一个下降指南来一起实现所有这些,更不用说那些不到 4 岁的东西了。

请帮忙!

0 投票
1 回答
207 浏览

nhibernate - NHibernate Override ISession 在测试期间伪造数据库

我正在做一个项目,该项目有超过 2000 个完整的数据库集成测试。我想加快这个过程,所以我想为什么不伪造数据库。

我们使用 Fluent NHibernate 作为我们的 ORM,这可能就是我遇到这种麻烦的原因。我们已经在一个不使用 NHibernate 而是使用基本 CRUD 操作的程序中实现了这个概念。

基本上在任何 CRUD 操作中,我都想将对象保存在内存中以表示字典列表。这将加快我们的测试过程,有望减少我们的构建时间。更不用说酷的因素了。

我已经研究过有两个单独的会话并让会话工厂使用一个或另一个,但我必须实现许多我真的不关心的方法/属性。

我还考虑在课堂上使用 go between 来进行自己的翻译,但它可能包括我更改大量现有代码。我试图尽可能地限制对项目其余部分的影响,因此回归测试不会是一个巨大的因素。

请让我知道任何人有任何其他建议!

谢谢!

0 投票
1 回答
1976 浏览

nhibernate - NHibernate ISession 与 Castle Windsor IoC 的循环依赖

我在 ASP.NET MVC 应用程序中将 Castle Windsor 与 NHIbernate 一起用于我的 IoC。它很好用,注册如下(有一个例外):

一切都很好,除了我的 ChangeAuditInterceptor 又注入了一个 IAccountSession 服务,该服务又注入了一个 NHibernate ISession ...这导致以下循环依赖异常:

尝试解析组件“后期绑定 NHibernate.ISession”时检测到依赖周期。导致循环的解析树如下: 组件 'Late bound NHibernate.ISession' 解析为组件 'Blah.Core.Services.AccountSession' 的依赖项 解析为组件 'Blah.Core.Infrastructure.Data.ChangeAuditInfoInterceptor' 的依赖项解析为组件'Blah.Core.Infrastructure.Installers.SessionFactoryBuilder'的依赖关系解析为组件'后期绑定NHibernate.ISessionFactory'的依赖关系解析为组件'后期绑定NHibernate.ISession'的依赖关系,这是正在解析的根组件。

在过去的几年里,我通常使用 NHibernateSessionManager 运行,它负责插入 IInterceptor 而不会导致这种循环依赖问题(与使用 Castle Windsor 的 UsingFactoryMethod 功能的 SessionFactoryBuilder 的用法相反)。

关于如何解决这种循环依赖的任何建议?没有开始通过其他方式(即绕过问题并因此产生气味的属性注入)来破解 AccountSession 的 ISession。我已将 ISession 注入切换为 AccountSession 服务的属性注入,它工作正常,但我不喜欢隐式合同与构造函数显式合同。

...ETC。

0 投票
1 回答
1762 浏览

c# - 将一对多的 nhibernate property-ref 设置为主键以外的属性失败

仅当我在我的 xml 文件中设置 property-ref 时,我才会收到此异常。

Initializing[Domain.Entities.R#12345] - 无法延迟初始化角色集合:Domain.Entities.R.LP,没有会话或会话已关闭

我不明白为什么 lp2 设置得很好,但 lp 失败了?我知道数据模型并不理想,但这是我现在必须使用的。如果我从 nhprof 中的 xml 文件中删除 property-ref,我会看到它调用 SQL 表(使用错误的值,所以我没有返回数据),但它没有失败。这只发生在我设置了 property-ref 时。

任何帮助将不胜感激。这是我第一次与 NH 合作。

0 投票
1 回答
1137 浏览

c# - 请求范围内的 NInject、NHIbernate 和 ISession

我基本上使用了一个我在很多地方都见过的例子,但我不相信它工作正常。

所以,我有以下内容:

在我的 Ninject 启动中,我有

我的会话提供者类看起来像

令我困惑的是,尽管声明应该在请求范围内创建 ISession,但它似乎在每个请求中多次点击 CreateInstance 方法,并且看起来正在产生多个会话。

例如,如果我有一个带有这个构造函数的控制器:

然后 CreateInstance 方法被调用两次(我应该添加存储库的构造函数需要一个 ISession 参数):

我认为将它作为 InRequestScope 意味着它只被调用一次。是我误解还是我在某处遗漏了一些代码。