【发布时间】:2011-03-24 12:14:43
【问题描述】:
我有三种实体类型:A、B 和 C。
这些映射到同一个数据库表。
B 和 C 继承 A。
数据库表中有3条记录,分别由A、B、C映射。
每当我在配置文件中保留 B 和 C 映射时,我都会获取每个实体 3 次。
我尝试删除 B 和 C 的映射,然后,我得到了实体的总数:三个。
最后,我分析了 SQL Server,从应用程序启动的查询被转换为三个 SQL SELECT 命令。
我怎样才能避免这种情况?或者我想知道是否可以将 N 个类映射到同一个表,而不意味着尝试获取一个实体会以检索它的次数与映射目标表的次数一样多。
提前谢谢你。
【问题讨论】:
-
不清楚是什么问题。您能否发布一些代码、映射和一些返回的内容与您期望的内容的示例。
-
然后仔细检查我的文字。 1 个表由 3 个实体映射。我有3条记录。当我尝试将这些记录作为实体检索时,我得到 9 个结果(每个实体,重复)。谢谢。
-
另一个细节:我尝试对 Query Over 和 HQL 标准做同样的事情。结果相同。
-
@Mattias 仍然值得向我们展示您的数据结构和映射,因为当我们不知道自己在处理什么时,这很难提供帮助。
-
@Vadim,请参阅 Jamie Ide 的答案。我相信不需要代码,我一直在寻找这种答案。我知道其他一些场景需要代码和示例,但这更多是因为我缺乏知识 - 如果我需要诚实的话......-.
标签: c# .net sql nhibernate queryover