/// <summary> /// 别名可以直接用字符串 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="p"></param> /// <param name="alias"></param> /// <returns></returns> public static QueryOverProjectionBuilder <T> WithAliasString <T>(this QueryOverProjectionBuilder <T> p, string alias) { FieldInfo fi = typeof(QueryOverProjectionBuilder <T>).GetField("lastProjection", BindingFlags.NonPublic | BindingFlags.SetField | BindingFlags.Instance | BindingFlags.GetField); IProjection lastProjection = fi.GetValue(p) as IProjection; fi.SetValue(p, Projections.Alias(lastProjection, alias)); return(p); }
/// <summary> /// Media items selector. /// </summary> /// <param name="builder">Media items projection builder.</param> /// <returns>Media items projection builder</returns> protected virtual QueryOverProjectionBuilder <TEntity> SelectItems(QueryOverProjectionBuilder <TEntity> builder) { return(builder .Select(() => alias.Id).WithAlias(() => modelAlias.Id) .Select(() => alias.Title).WithAlias(() => modelAlias.Name) .Select(() => alias.CreatedOn).WithAlias(() => modelAlias.CreatedOn) .Select(() => alias.OriginalFileExtension).WithAlias(() => modelAlias.FileExtension) .Select(() => alias.PublicUrl).WithAlias(() => modelAlias.PublicUrl) .Select(alias.GetIsProcessingConditions()).WithAlias(() => modelAlias.IsProcessing) .Select(alias.GetIsFailedConditions()).WithAlias(() => modelAlias.IsFailed) .Select(() => alias.Version).WithAlias(() => modelAlias.Version)); }
/// <summary> /// SelectEntity /// </summary> /// <typeparam name="T"></typeparam> /// <param name="builder"></param> /// <returns></returns> public static QueryOverProjectionBuilder <T> SelectEntity <T>(this QueryOverProjectionBuilder <T> builder) where T : class { System.Type type = typeof(T); var properties = type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); foreach (PropertyInfo pi in properties) { if (pi.CanWrite) { builder.Select(NHibernate.Criterion.Projections.Property(pi.Name).As(pi.Name)); } } return(builder); }
/// <summary> /// Selects the items. /// </summary> /// <param name="builder">The builder.</param> /// <returns></returns> protected override QueryOverProjectionBuilder <MediaImage> SelectItems(QueryOverProjectionBuilder <MediaImage> builder) { return(builder .Select(() => alias.Id).WithAlias(() => modelAlias.Id) .Select(() => alias.Title).WithAlias(() => modelAlias.Name) .Select(() => alias.CreatedOn).WithAlias(() => modelAlias.CreatedOn) .Select(() => alias.Version).WithAlias(() => modelAlias.Version) .Select(() => alias.Caption).WithAlias(() => modelAlias.Tooltip) .Select(() => alias.OriginalFileExtension).WithAlias(() => modelAlias.FileExtension) .Select(() => alias.PublicThumbnailUrl).WithAlias(() => modelAlias.ThumbnailUrl) .Select(() => alias.PublicUrl).WithAlias(() => modelAlias.PublicUrl) .Select(alias.GetIsProcessingConditions()).WithAlias(() => modelAlias.IsProcessing) .Select(alias.GetIsFailedConditions()).WithAlias(() => modelAlias.IsFailed) .Select(() => alias.Size).WithAlias(() => modelAlias.Size)); }