在SQL Server 2008 R2中,给出了一个或多个一对一表的表结构,例如......(CaseId是公共主键)
CaseTable: 案例ID COL1 COL2
CaseDetailTable: 案例ID COL1 COL2
CaseMoreDetailTable: 案例ID COL1 COL2
然后在它的顶部放置一个视图,例如
CREATE VIEW MyView
SELECT CaseTable.Col1 AS CaseCol1, CaseDetailTable.Col1 AS CaseDetailCol1,
CaseMoreDetailTable.Col1 AS CaseMoreDetailCol1
FROM CaseTable
INNER JOIN CaseDetailTable
ON CaseTable.CaseId = CaseDetailtable.CaseId
INNER JOIN CaseMoredetailTable
ON CaseTable.caseId = caseMoreDetail.CaseId
现在,如果我将NHibernate映射到视图,它将能够通过视图延迟加载而不是,例如,如果使用...调用视图,则从CaseMoreDetail中选择数据。
SELECT CaseCol1, CaseDetailCol1
FROM MyView
或者,最好将三个表映射到实体,从而确保它可以延迟加载吗?
答案 0 :(得分:1)
一对一映射 不支持延迟加载 AFAIK。对于视图来说相同,如果您将视图映射到视图中所有连接,那么就无法延迟加载关联。尝试在主实体中将关联部分指定为<many-to-one>
关联。