我有一个看起来像这样的类:
[Class(Table = "SessionReportSummaries", Mutable = false)]
public class SessionReportSummaries
{
[ManyToOne(Column = "ClientId", Fetch = FetchMode.Join)]
public Client Client { get; private set; }
[ManyToOne(Column = "ClientId", Fetch = FetchMode.Join)]
public ClientReportSummary ClientReportSummary { get; private set; }
}
SessionReportSummaries 视图有一个 ClientId 列,我正在尝试使用此列加入一个 Client 对象和一个 ClientReportSummary 对象。
不幸的是,NHibernate 只想加入类中定义的第一个,并且总是为第二个执行 SELECT。所以在这种情况下,NHibernate 首先查询数据库:
SELECT {stuff} FROM SessionReportSummaries ... left outer join Clients on this.ClientId=Clients.Id ...
(有很多其他连接),然后是其中的 N 个:
SELECT {stuff} FROM ClientReportSummary WHERE ClientReportSummary.ClientId = '{id goes here}'
有问题的 N 个客户中的每一个都有一个。这会导致糟糕的性能。
如果我交换 Client 和 ClientReportSummary 对象的位置,则 NHibernate 将 ClientReportSummary 加入 SessionReportSummaries 对象,并为每个 Client 对象执行选择。
有谁知道我怎样才能让 NHibernate 为这两者执行连接?