在Fluent NHibernate Mapping中指定预先加载

时间:2011-05-26 10:24:57

标签: nhibernate fluent-nhibernate

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

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

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

由于 本

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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