/// <summary> /// Returns a query that will return an Empty enumeration of specified type when executed. /// </summary> /// <param name="entityType"></param> /// <returns></returns> public static EntityQuery BuildEmptyQuery(Type entityType) { var parameterExpr = Expression.Parameter(entityType, "t"); // where 1 = 0; var predicateExpr = Expression.Equal(Expression.Constant(1), Expression.Constant(0)); var lambdaExpr = Expression.Lambda(predicateExpr, parameterExpr); var entityQuery = EntityQuery.Create(entityType); entityQuery = AddWhereClause(entityQuery, lambdaExpr); return(entityQuery); }
/// <summary> /// Builds an <see cref="EntityQuery"/> based on a collection of <see cref="EntityKey"/>s. /// The EntityQuery returned is actually an EntityQuery{T} but T is unknown at compile time. /// </summary> /// <param name="keys"></param> /// <returns></returns> public static EntityQuery BuildQuery(IEnumerable <EntityKey> keys) { if (!keys.AllEqual(k => k.EntityType)) { throw new ArgumentException("The EntityQueryBuilder.BuildQuery method requires that the 'keys' parameter consist of EntityKeys all with the same EntityType."); } var firstKey = keys.FirstOrDefault(); if (firstKey == null) { return(null); } var entityQuery = EntityQuery.Create(firstKey.EntityType.ClrType); return(AddWhereClause(entityQuery, keys)); }