【问题标题】:NHibernate lazy loading in a read only/warehouse scenario只读/仓库场景中的 NHibernate 延迟加载
【发布时间】:2011-10-26 04:28:56
【问题描述】:

在 SQL Server 2008 R2 中,给定三个(或更多)一对一相关表的表结构,例如...(CaseId 是公共主键)

案例表: 案例ID Col1 Col2

案例详情表: 案例ID Col1 Col2

案例更多详情表: 案例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

或者,最好将三个表映射到实体,从而确保它可以延迟加载?

【问题讨论】:

    标签: sql-server-2008 nhibernate


    【解决方案1】:

    一对一映射不支持延迟加载 AFAIK。视图也是如此,如果您将视图映射到所有连接中,则无法延迟加载关联。尝试在主实体中将关联部分指定为<many-to-one>关联。

    【讨论】:

    • 如果您愿意,您实际上可以将一对一关系映射为多对一以实现延迟加载。
    • @ColeW 谢谢我其实是在回复里写的,但是忘记标记为代码,所以 从文本中消失了 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 2013-12-10
    相关资源
    最近更新 更多