public static IIncludableSpecificationBuilder <TEntity, TProperty> ThenInclude <TEntity, TPreviousProperty, TProperty>( this IIncludableSpecificationBuilder <TEntity, TPreviousProperty> value, Expression <Func <TPreviousProperty, TProperty> > thenIncludeExpression) where TEntity : class { var propertyName = (thenIncludeExpression.Body as MemberExpression)?.Member?.Name; value.Aggregator.AddNavigationPropertyName(propertyName); return(new IncludableSpecificationBuilder <TEntity, TProperty>(value.Aggregator)); }
/// <summary> /// /// </summary> /// <typeparam name="TEntity"></typeparam> /// <typeparam name="TPreviousProperty"></typeparam> /// <typeparam name="TProperty"></typeparam> /// <param name="previousBuilder"></param> /// <param name="thenIncludeExpression"></param> /// <returns></returns> public static IIncludableSpecificationBuilder <TEntity, TProperty> ThenInclude <TEntity, TPreviousProperty, TProperty>( this IIncludableSpecificationBuilder <TEntity, IEnumerable <TPreviousProperty> > previousBuilder, Expression <Func <TPreviousProperty, TProperty> > thenIncludeExpression) where TEntity : class { var info = new IncludeExpressionInfo(thenIncludeExpression, typeof(TEntity), typeof(TProperty), typeof(TPreviousProperty)); ((List <IncludeExpressionInfo>)previousBuilder.Specification.IncludeExpressions).Add(info); var includeBuilder = new IncludableSpecificationBuilder <TEntity, TProperty>(previousBuilder.Specification); return(includeBuilder); }
public static IIncludableSpecificationBuilder <TEntity, TProperty> ThenInclude <TEntity, TPreviousProperty, TProperty>( this IIncludableSpecificationBuilder <TEntity, IEnumerable <TPreviousProperty> > previousBuilder, Expression <Func <TPreviousProperty, TProperty> > thenIncludeExpression, bool condition) where TEntity : class { if (condition && !previousBuilder.IsChainDiscarded) { var info = new IncludeExpressionInfo(thenIncludeExpression, typeof(TEntity), typeof(TProperty), typeof(IEnumerable <TPreviousProperty>)); ((List <IncludeExpressionInfo>)previousBuilder.Specification.IncludeExpressions).Add(info); } var includeBuilder = new IncludableSpecificationBuilder <TEntity, TProperty>(previousBuilder.Specification, !condition || previousBuilder.IsChainDiscarded); return(includeBuilder); }
public static IIncludableSpecificationBuilder <TEntity, TProperty> ThenInclude <TEntity, TPreviousProperty, TProperty>( this IIncludableSpecificationBuilder <TEntity, TPreviousProperty> previousBuilder, Expression <Func <TPreviousProperty, TProperty> > thenIncludeExpression) where TEntity : class => ThenInclude(previousBuilder, thenIncludeExpression, true);