是否可以在不加载所有属性的情况下急切加载一个类型的属性?
现实生活情况:
我有两个实体,MediaLink 和 MediaItem。
我的媒体项目如下所示:
public partial class MediaItem
{
public MediaItem()
{
this.MediaLink = new HashSet<MediaLink>();
}
public int Id { get; set; }
public byte[] Content { get; set; }
public int Length { get; set; }
public string MimeType { get; set; }
public virtual ICollection<MediaLink> MediaLink { get; set; }
}
编写查询时,我需要从实体访问MimeType
。MediaItem
MediaLink
然而,当我使用导航属性访问 MimeType 时,查询还会返回Content
视频中的 which 可能 > 10MB 并削弱性能。
我怀疑这是不可能的,但是有什么方法可以返回 MediaItem 的 MimeType 属性而不通过 EF 的内容?
编辑:感谢您的评论,我可能应该补充一点,我认为我可以通过将父级MediaLink
和我想要的属性投影MediaItem
到新类型中来使用标准 linq 查询来做到这一点,但我需要在内部和 AutoMapper 映射中执行此操作。
目前,下面的映射要求我MediaItem
通过导航属性进入:
Mapper.CreateMap<MediaLink, MediaModel>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.MediaTypeId))
.ForMember(dest => dest.MimeType, opt => opt.MapFrom(src => src.MediaItem.MimeType));
我真正想做的是这样的:
Mapper.CreateMap<MediaLink, MediaModel>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.MediaTypeId))
.ForMember(dest => dest.MimeType, opt => opt.MapFrom(src => (from mi in src.MediaItem select mi.MimeType)));
并希望投影能够返回整个MediaItem
实体。