【问题标题】:Specify eager loading within Fluent NHibernate Mapping在 Fluent NHibernate Mapping 中指定预先加载
【发布时间】:2015-11-17 02:15:03
【问题描述】:

如何在 Fluent NHibernate 映射中指定一对多集合的预加载?

我尝试了以下方法,但在检索父对象并访问它的“Features”属性时仍然收到两个查询:

            HasMany<FeatureInstance>(s => s.Features).AsSet()
            .Inverse()
            .Cascade.SaveUpdate()
            .KeyColumn("SiteId")
            .Access.ReadOnlyPropertyThroughCamelCaseField()
            .Not.LazyLoad();

谢谢 本

【问题讨论】:

    标签: nhibernate fluent-nhibernate


    【解决方案1】:

    即使你有两个查询,它仍然被称为预加载,因为这两个查询都是立即执行的(在延迟加载中,第二个查询只会按需执行)。

    如果您正在寻找JOIN SQL 查询,您可以使用.Fetch.Join() 强制JOIN。但请注意,当您稍后想要使用查询从数据库中获取父对象时,生成的集合将包含每个父对象的多个副本,具体取决于子对象的数量(想想 SQL JOIN 返回的行数...... ),所以在大多数情况下它不是很有用。

    【讨论】:

      【解决方案2】:

      我认为您还必须定义一个获取策略。见here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-13
        • 1970-01-01
        • 2013-12-10
        • 2011-05-09
        • 2010-10-12
        • 1970-01-01
        相关资源
        最近更新 更多