Bifrost
Bifrost copied to clipboard
Come up with a concept for dealing with specifics for Query Source
Today we have a system based on providing the capability of metadata related to things like paging. We call this QueryProviders. This should probably be called more specific what it actually does; provide the metadata hook for querying. The QueryProvider is linked to the return type of the IQueryFor<> implementation.
The query source, e.g. SQL, DocumentDB, Mongo or similar should have a hook into this providing capabilities like tell wether or not paging is possible. Another aspect is then streaming rather than paging (see #804).
The case is basically that you might want to use IQueryable as your return type, but the actual source has not necessarily support for all scenarios that the QueryProvider today assumes is there. We've also seen that there are differences in how something like paging is implemented per source - this was evident when implementing support for Oracle; we couldn't do a .Skip().Take() out of the box - but had to add something specific.