问题标签 [nhibernate]

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 回答
3703 浏览

nhibernate - 为 NHibnernate 结合 Fluent 和 XML 映射

我刚刚爱上了 NHibernate 和流畅的界面。后者通过重构支持实现了非常好的映射(不再需要 xml 文件)。

但是没有人是完美的,所以我错过了流利的多对任意映射。有人知道它是否已经存在吗?如果是这样,一个简单的代码行会很好。

但要坚持问题的标题,有没有办法结合流畅和正常的 NHibernate 映射。

目前,我将以下几行用于我的测试设置 WITH fluent,以及我的测试的第二个代码块,而不使用 fluent(使用 XML 映射)。我怎么能告诉流利使用流利的 IF AVAILABLE 和 XML 否则......

没有流利...

就是这样……克里斯

PS:我真的很喜欢这个网站,界面非常完美,所有文章的质量都令人难以置信。我认为这将是巨大的:-) 必须注册...

0 投票
5 回答
6158 浏览

nhibernate - Windows 服务应用程序中的 NHibernate 会话管理

我正在开发和作为 Windows 服务运行的应用程序。还有其他组件,包括一些 WCF 服务、客户端 GUI 等 - 但访问数据库的是 Windows 服务。

因此,该应用程序是一个长时间运行的服务器,我想提高它的性能和可扩展性,我希望改进数据访问等。我在另一个线程中发布了关于二级缓存的帖子。

这篇文章是关于访问数据库的长时间运行线程的会话管理。我应该使用线程静态上下文吗?如果是这样,是否有任何示例说明如何实施。

网络上所有使用 NHibernate 的人似乎都非常关注 Web 应用程序风格的架构。似乎非常缺乏非 Web 应用程序设计的文档/讨论。

目前,我长期运行的线程这样做:

  1. 调用 3 或 4 个 DAO 方法
  2. 验证返回的分离对象的状态。
  3. 如果需要,更新状态。
  4. 调用几个 DAO 方法来持久化更新的实例。(传入对象的 id 和实例本身 - DAO 将再次从数据库中检索对象,并在提交事务之前设置更新的值和 session.SaveOrUpdate()。
  5. 睡眠'n'秒
  6. 再重复一遍!

因此,以下是我们用于每个 DAO 方法的常见模式:

  • 使用 sessionFactory.OpenSession() 打开会话
  • 开始交易
  • 做数据库工作。检索/更新等
  • 提交反式
  • (异常情况下回滚)
  • 最后总是处理事务和 session.Close()

对 DAO 类的每个方法调用都会发生这种情况。我怀疑这是我们正在做的某种反模式。

但是,我无法在任何地方找到足够的方向来改进它。

请注意,当这个线程在后台运行时,做它的工作,有来自 WCF 客户端的请求,每个客户端都可以自己调用 2-3 个 DAO - 有时查询/更新长时间运行的线程处理的相同对象.

任何改进我们设计的想法/建议/指针将不胜感激。如果我们能进行一些很好的讨论,我们可以把它变成一个社区维基,并可能从http://nhibernate.info链接到这里

克里希纳

0 投票
2 回答
1332 浏览

nhibernate - nhibernate - 最后排序为空

以与 MS SQL Server 2005/2008(最好是 Oracle)兼容的方式使用 C# 中的 NHibernate 和仅 HQL(不是 SQL)。

有没有办法编写 order by 子句,以便空值将在查询结果的末尾排序,而非空结果将按升序排序?

根据 nickf 引用的问题的答案,答案是:

0 投票
3 回答
3462 浏览

nhibernate - 单声道休眠 2.0.1

我已经在 Windows 机器上构建了我的 WinForm 应用程序,并且该应用程序运行正常。当我使用 nhibernate 1.2.1 时,该应用程序也可以在使用单声道的 linux 机器上运行,但是现在当我将应用程序升级到 nhibernate 2.0.1 时,它只能在 Windows 中运行。我收到错误:NHibernate.InvalidProxyTypeException:以下类型可能不能用作代理:xxxx.Data.Dao.Credit:方法 obj_address 应该是虚拟的......谁能帮我解决这个问题?

0 投票
1 回答
1094 浏览

c# - NHibernate 映射到不在 ID 上的另一个对象

好的,NHibernate 问题在这里。我有两个要相互映射的对象。我有“供应商”和“乡镇”……现在这两者应该通过邮政编码链接,而不是 ID。我已经多次使用 id 对对象执行此操作,但从来没有这样的事情。

我遇到的问题是 ZipCodes 在存储为字符串时会以某种方式变成整数(前导零被丢弃)?或者它正在使用其中一个对象的 ID。

这是我的错误:

“/HQWebsite”应用程序中的服务器错误。不存在具有给定标识符的行[HQData.Objects.Township#7922]

我在那里查看的数据库中的数据也不是准确的。

这是我映射供应商 xml 文件的方式:

这是乡镇的财产:

有没有人熟悉 NHibernate 并且以前做过这个?谢谢!

0 投票
3 回答
699 浏览

c# - 领域驱动设计 - 逻辑删除

所以,我建立了一个很好的域模型。存储库处理数据访问等等。弹出了一个新要求,表明需要使用删除记录原因。到目前为止,删除都相当简单 => Entity.Children.Remove(child)。由于我的 ORM 工具正在处理状态管理,因此没有进行内部更改跟踪。但是,我不确定如何处理这个问题。

1)我可以在父实体中保留一个已删除的子集合,并将更改跟踪从 nHibernate 中拉出并自己处理。

2)??????

0 投票
3 回答
3115 浏览

nhibernate - 从 NHibernate 映射文件生成 C# 类的工具?

有什么工具可以从 NHibernate 映射文件生成 C# 类?

0 投票
1 回答
2926 浏览

nhibernate - NHibernate 双向多对多关联

我有一堂课,描述如下:

我想将 Contacts 属性映射到下表:

我希望它双向映射,即当 Customer1 添加到 Customer2 的联系人时,Customer1 的联系人集合应该包含 Customer2(可能仅在实体重新加载后)。我怎么能那样做?

更新当然我可以映射从左到右和从右到左的集合,然后在运行时组合,但它会......嗯......不好吃......还有其他解决方案吗?无论如何,非常感谢你,FryHard

0 投票
2 回答
1708 浏览

asp.net - NHibernate 数据库连接在负载下失败

我想知道这对于任何有经验的 NHibernate 开发人员来说是否熟悉,或者是否有人可以告诉我从哪里开始尝试解决这个问题:

我继承了一个用 ASP.NET 1.1 编写的 NHibernate 站点,使用 NHibernate 0.6 和 .NET 远程处理驻留在数据库服务器上的 DAL 层。我一直在尝试将其升级到 ASP.NET 3.5 和 NHibernate 1.2.1.4。

我用直接的数据库连接替换了 .NET 远程处理设置,一切正常,直到站点承受一定的负载,然后 NHibernate 调用开始间歇性地失败并抛出异常:ADOException 无法执行查询,然后是 NHibernate 生成的 SQL 语句。

给出错误的堆栈跟踪是:

0 投票
2 回答
2825 浏览

c# - NHibernate DetachedCriteria.SetFirstResult?

我在网络上找到了一个在 NHibernate 中实现存储库模式的示例,其中一个方法使用此代码来获取查询的第一个结果:

但是 VS intellisense 并没有从 DetachedCriteria 中采用这种方法。有谁知道 DetachedCriteria 是否可行?我正在使用 NHibernate 1.2.1 版。