Method BuildCacheKey<TProps>(Expression<Func<TProps, bool>>, long)
Generates stable cache key from Expression (without constant values).
Same structure = same key regardless of actual values.
public string BuildCacheKey<TProps>(Expression<Func<TProps, bool>> predicate, long schemeId)