Exemplo n.º 1
0
 internal QueryEndpoint(QueryEndpoint outerEndpoint, IQueryRootBuilder queryRootBuilder)
 {
     ArgumentValidator.EnsureArgumentNotNull(outerEndpoint, "outerEndpoint");
     ArgumentValidator.EnsureArgumentNotNull(queryRootBuilder, "queryRootBuilder");
     Provider    = outerEndpoint.Provider;
     session     = outerEndpoint.session;
     RootBuilder = queryRootBuilder;
 }
Exemplo n.º 2
0
        /// <summary>
        /// Overrides current query root builder (i.e. builder of <see cref="QueryEndpoint.All{T}"/> expression).
        /// After this method is called <see cref="Query"/> is changed to a new <see cref="QueryEndpoint"/>
        /// that utilizes specified <paramref name="queryRootBuilder"/>.
        /// </summary>
        /// <param name="queryRootBuilder"><see cref="IQueryRootBuilder"/> to use.</param>
        /// <returns><see cref="IDisposable"/> implementor
        /// that reverts <see cref="IQueryRootBuilder"/> to original
        /// once <see cref="IDisposable.Dispose"/> is called.</returns>
        public IDisposable OverrideQueryRoot(IQueryRootBuilder queryRootBuilder)
        {
            ArgumentValidator.EnsureArgumentNotNull(queryRootBuilder, "queryRootBuilder");
            var oldQuery = Query;
            var newQuery = new QueryEndpoint(oldQuery, queryRootBuilder);

            Query = newQuery;
            return(new Disposable(_ => Query = oldQuery));
        }