我有一些多余的主键问题。
我有一个包含许多报告的项目。我已将它们映射如下所示。我可以做到Session.QueryOver(Of Item).List
,并且没有生成额外的列。我也可以这样做Session.QueryOver(Of Report).List
,并且没有生成额外的列。
但是,一旦我尝试遍历从 Item 到 Reports 的关系,就会得到如下所示的 SQL 查询。谁能告诉我为什么?提前致谢!
项目映射:
Public Class ItemMapping
Inherits ClassMap(Of Item)
Public Sub New()
Table("Items")
Id(Function(x) x.ItemID)
HasMany(Function(x) x.Reports).KeyColumn("ItemID").Inverse().Cascade.All()
End Sub
End Class
报告映射:
Public Class ReportMapping
Inherits ClassMap(Of Report)
Public Sub New()
Table("Reports")
Id(Function(x) x.ReportID)
References(Function(x) x.Item).Column("ItemID")
Map(Function(x) x.ReportName)
End Sub
End Class
SQL 结果:
SELECT repor0_.ItemID as ItemID1_,
repor0_.ReportID as Rep1_1_,
repor0_.ReportID as Rep1_4_0_,
repor0_.ReportName as Rep2_4_0_,
repor0_.ItemID as ItemID4_0_ FROM dbo.Reports repor0_ WHERE repor0_.ItemID=@p0;@p0 = 1266 [Type: Int32 (0)]