NHibernate 多对一多次获取相同的项目

Posted

技术标签:

【中文标题】NHibernate 多对一多次获取相同的项目【英文标题】:NHibernate many-to-one fetching same item many times 【发布时间】:2009-03-20 09:11:32 【问题描述】:

在我的模型中,我有游戏。每个游戏都有一个与之关联的事件,该事件被映射为多对一的关联。

当我查询游戏时,在具有给定 EventId(不同于其 DB-PrimaryKey-id)的事件中,NHibernate 为每个游戏发出以下查询:

NHibernate: SELECT event0_.Id as Id8_0_, event0_.EventId as EventId8_0_ FROM Events event0_ WHERE event0_.EventId=@p0; @p0 = '4'

在我的映射中(以及在从映射生成的数据库中)EventId 具有唯一约束。我如何告诉 NHibernate 对于给定的 EventId,它应该只获取一次事件,而不是为 N 个游戏发出 N 次相同的确切查询?

【问题讨论】:

【参考方案1】:

已修复。问题是外键设置在“一个”表的非主键上。改变它解决了这个问题。

【讨论】:

以上是关于NHibernate 多对一多次获取相同的项目的主要内容,如果未能解决你的问题,请参考以下文章

具有相同 ID 键字段的多对多

NHibernate + Fluent NHibernate 异常

在使用 NHibernate 进行持久性的项目中测试数据模型

NHibernate 多次执行相同的查询

多对一公式将表名附加到 SQL 关键字

NHibernate 多对多删除导致外键违规