My asp.net core program exposes a GraphQL endpoint that is handled by HotChocolate. It naturally supports filtering/sorting that is translated to DB calls via IQueryable
mechanism.
UI --(graph ql)--> HotChocolate --(IQueryable)--> Logic --(IQueryable)--> DB
Now in the logic layer I want to format some string in a property of the class. I can do that only in C# code. But if I materialize the IQueryable
I have into an enumerable, I lose that translation. So I will always query for all items and will return an IEnumerable
instead which will be manually filtered in-memory by HotChocolate:
UI --(graph ql)--> HotChocolate ==(IEnumerable)==> Logic ==(all items)==> DB
So how to "inject" the C# processing into IQueryable
so that the filtering/sorting expression is preserved? I think I can do a visitor of sorts, but wouldn't that get translated into the DB call anyway? I assume there should be a straight-forward solution but I don't know who it's called?
question from:
https://stackoverflow.com/questions/65952428/how-to-post-process-iqueryable-fields-in-code-without-losing-the-expression-sent 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…