【发布时间】:2011-08-26 10:09:12
【问题描述】:
我有一个实体映射,其中三个属性标记为延迟加载。我的期望是,当我访问单个属性(即缩略图)时,只会加载该属性的数据。但是,如果访问这些属性中的任何一个,NHibernate 似乎将加载所有标记为 LazyLoaded 的属性(即,访问 Thumbnail 也会加载 HighRes 和 LowRes 数据)。
有没有办法改变这种行为?
public sealed class LeakImageMap : ClassMap<LeakImageEntity>
{
public LeakImageMap()
{
LazyLoad();
Table("LeakImage");
Id(x => x.Id).GeneratedBy.GuidComb().UnsavedValue(Guid.Empty);
Map(x => x.FileName).Not.Nullable();
Map(x => x.FileSize).Not.Nullable();
Map(x => x.LeakId).Nullable();
Map(x => x.Thumbnail).Not.Nullable().LazyLoad();
Map(x => x.HighRes).Not.Nullable().LazyLoad();
Map(x => x.LowRes).Not.Nullable().LazyLoad();
}
}
其他信息
访问 image.Thumbnail 生成如下 SQL:
SELECT
leakimagee_.Thumbnail as Thumbnail14_,
leakimagee_.HighRes as HighRes14_,
leakimagee_.LowRes as LowRes14_
FROM
Hvcs.LeakImage leakimagee_
WHERE
leakimagee_.Id=@p0;
@p0 = 7588d167-22b5-4f2e-b640-9ecb00ed9138 [Type: Guid (0)]
但是,只想拥有以下内容:
SELECT
leakimagee_.Thumbnail as Thumbnail14_
FROM
Hvcs.LeakImage leakimagee_
WHERE
leakimagee_.Id=@p0;
@p0 = 7588d167-22b5-4f2e-b640-9ecb00ed9138 [Type: Guid (0)]
【问题讨论】:
标签: nhibernate fluent-nhibernate