问题标签 [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 投票
3 回答
536 浏览

nhibernate - NHibernate 不持久化集合

我对 NHibernate 有一个相当奇怪的错误。我在跨线程共享 ISession 时遇到错误,并通过提供我自己的 ADO.NET 连接解决了这个问题,例如:

我的应用程序现在可以工作,但是所有带有集合的对象都被保存在数据库中,没有它们的集合。例如,假设一辆车有一个轮胎列表。然后我创建一辆车,然后根据数据库中已有的轮胎生成轮胎列表。保存汽车对象只会保存汽车而不是列表!

对我做错了什么有任何帮助吗?我正在使用 NHibernate 2.0,我确实调用了 Session.Flush() 和 Transaction.Commit()。

干杯。

0 投票
1 回答
13478 浏览

nhibernate - 从 NHibernate 二级缓存中删除对象

我刚开始考虑在我的一个应用程序中使用 NHibernate 二级缓存。我可能会使用NHibernate.Caches.SysCache.SysCacheProvider依赖于 ASP.net 缓存的。

启用缓存不是问题,但我想知道如何管理缓存,例如以编程方式从缓存中删除某些实体等。

我的应用程序是某种图像数据库。用户通过后端上传图像,并可以通过访问在前端查看它/ImageDb/Show?userId=someUserId

数据不会经常变化。如果它发生变化,用户不会关心后端中名为“清除我的缓存”的按钮,该按钮会从缓存中删除该用户的缓存对象。

我在网上找到了一个解决方案,可以从 nhibernates 二级缓存中删除所有缓存的对象。但这对我来说有点太暴力了......我不想仅仅因为一个用户试图清除他自己的数据的缓存,就清除数十个用户的整个缓存。

所以我基本上想做的是:有选择地从 C# 中的 nhibernates 二级缓存中删除缓存的 db 对象。

这可能吗?我想这也取决于缓存提供程序。如果这对 ASP.net 缓存提供程序不可行,我愿意接受其他内置/开源建议。

0 投票
2 回答
495 浏览

asp.net - Nhibernate in asp,net ISession 帮助

我们在和 asp.net MVC 应用程序中使用 nhibernate。

我们正在通过 httpModule 实现 Session per Request 模式。

它看起来很简单,但是当我们使用 NHibernate Profiler 运行时,它清楚地表明会话永远不会关闭。

模式似乎很简单......但我不明白为什么会议永远不会结束。

这是我认为很重要的代码。

设置事件处理程序:

在处理程序中处理会话

谁能指出我正确的方向?我应该看什么,模式没有正确实施吗?

我很困惑

谢谢!

电子-

0 投票
1 回答
197 浏览

asp.net - Nhibernate 会话和 ASP.NET

使用 NhibernateProfiler 我们已经确定我们正在为每个 http 请求创建一个 ISession。但是 ISessions 永远不会关闭。我们可以在 log 中看到 localSession.Close() 触发的位置。我们的配置文件中有什么东西会导致会话永远不会关闭吗?是否还有其他原因 localSession.Close() 不会物理关闭会话?我们在 NHibernate 的 2.1 上。

感谢您抽时间阅读。

0 投票
3 回答
1287 浏览

asp.net-mvc - 如何在 ASP.NET MVC 应用程序中处理 NHibernate ISession

我在我的 asp.net mvc 应用程序中连接了 NHibernate。

一切正常,如果我不处置 ISession。但是,我已经读过您应该处理,但是当我这样做时,我会随机出现“会话已关闭”异常。

我正在使用 Windsor 将 ISession 注入到我的其他对象中。

这是我目前的NHModule:

注册 ISession:

当我在模块中的 unbind 上添加 Dispose 时会发生错误。由于我不断收到会话已关闭错误,我认为这不是正确的方法,那么正确的方法是什么?

谢谢,乔

0 投票
1 回答
701 浏览

nhibernate - 如何获取由 StructureMap HttpContextScoped 的 NHibernate ISession

我对 MVC 框架有些陌生,并且根据以下帖子: NHibernate with StructureMap我不确定如何在我的控制器中实际获取 HttpContextScoped ISession?

我确信有一种简单的方法可以做到这一点,但我不确定。

此外,这是一个小项目,我不想过度使用企业设计模式。

谢谢!

0 投票
1 回答
194 浏览

.net - 服务层:每个应用程序或每个视图模型 1 个实例?(或者:给每个视图模型自己的数据上下文)

我正在使用三层构建 C#/.Net 3.5 应用程序:UI(视图/视图模型)、服务和数据访问/持久性。

服务层:每个服务层实例都与一个唯一的持久性实例相关联。服务层通过接口引用持久层。

持久层:目前,持久层接口有一个使用(Fluent)NHibernate 的具体实现。所有持久层实例共享同一个 ISessionFactory。每个持久性实例都使用该工厂打开自己的 ISession。

目标:按照Ayende Rahien的建议,让每个视图模型在自己的数据上下文(又名 ISession)中运行。为了实现这一点,我的应用程序为每个 VM 提供了自己的服务层实例(反过来,它有自己的持久层实例)。对我来说,拥有这么多同一个服务层类的实例闻起来很可疑。

问题:这是一个好方法吗?离开每个 VM 一个服务实例并转移到每个应用程序一个服务实例会更好吗?如果是这样,我将如何做到这一点并仍然为每个 VM 提供自己的数据上下文?

谢谢你,

0 投票
5 回答
897 浏览

nhibernate - 为每个 ViewModel 创建一个 ISession 实例

这是我的问题:我正在使用以下工具构建桌面应用程序:

  • 卡利本
  • 忍者
  • 休眠

我所有的视图模型和存储库都是用 Ninject 实例化的。我的存储库都需要在其构造函数中使用 ISession。

我想听从ayende关于 ViewModel 的建议:每个 ViewModel 都会打开一个新会话。

是否可以将 Ninject 配置为在创建 ViewModel 时打开一个新会话,并在此视图模型使用的存储库中使用此会话?

我查看了 Ninject 的 InScope 函数,以及 NHibernate 中的 ICurrentSessionContext 接口,但我不知道如何对所有这些进行建模以获得我想要的......

以前有人做过类似的东西吗?

提前致谢

麦克风

0 投票
3 回答
1679 浏览

asp.net - 如何使用依赖注入将工作单元容器传递到存储库的构造函数中

我正在尝试解决如何在 ASP.NET Web 应用程序中完成存储库模式的实现。

目前,我为每个域类定义了一个存储库接口,用于定义例如加载和保存该类的实例的方法。

每个存储库接口都由一个执行 NHibernate 内容的类实现。Castle Windsor根据web.config将类的DI整理到界面中。下面提供了一个已实现类的示例:

正如在前一个线程中所指出的,存储库类需要接受一个工作单元容器(即 ISession),而不是在每个方法中实例化它。

我预计工作单元容器将在需要时由每个 aspx 页面创建(例如,在属性中)。

然后,当 Windsor 为我创建这个工作单元容器实例时,如何指定将其传递到 StoredWillRepository 的构造函数中?

还是这种模式完全错误?

再次感谢您的建议。

大卫

0 投票
2 回答
162 浏览

nhibernate - 每个请求的 ISession(仅在必要时)

我正在开发一个应用程序(asp.net mvc),并且我在每个请求中使用 ISession(在 globa.asax 中,我在 Begin_Request 事件和 End_Request 事件中使用 Bind 和 Unbind)。一切正常,但有时(某些请求)我不需要使用 ISession(与数据库的连接)。

我想知道是否有任何方法仅在我需要时打开 ISession 并在所有进程请求中创建 ISession 条目(与所有存储库和唯一的事务上下文共享)?

我正在开发和便士拍卖网站,我的服务器每秒会有很多请求,有时我不需要连接,我会使用缓存。

谢谢

干杯