protected QueryRepositoryBase(IQueryEventHandler queryEventHandlers, IQueryInterceptor queryInterceptor) { Check.NotNull(queryEventHandlers, "queryEventHandlers"); Check.NotNull(queryInterceptor, "queryInterceptor"); QueryEventHandler = queryEventHandlers; QueryInterceptor = queryInterceptor; }
public virtual void AddInterceptor(IQueryInterceptor interceptor) { if (interceptor == null) { throw new ArgumentNullException("interceptor"); } if (!AddedInterceptors.Contains(interceptor)) { AddedInterceptors.Add(interceptor); } }
public void RemoveInterceptor(IQueryInterceptor interceptor) { if (_impl == _simpleCall) { return; } if (_callWithInterception.RemoveInterceptor(interceptor)) { _impl = _simpleCall; } }
/// <summary> /// Adds the interceptor to query context. /// </summary> /// <param name="interceptorType"> /// Type of the interceptor. /// </param> /// <param name="context"> /// The context. /// </param> /// <returns> /// Created query interceptor. /// </returns> protected virtual IQueryInterceptor AddInterceptorToContext(Type interceptorType, QueryContext context) { if (context == null) { throw new ArgumentNullException("context"); } IQueryInterceptor interceptor = this.InterceptorFactory.CreateQueryInterceptor(interceptorType); // initializing interceptor with query context and object scope interceptor.Initialize(context, this.Scope); context.Interceptors.Add(interceptorType, interceptor); return(interceptor); }
private static QueryExecutionDelegate BuildExecutionDelegate(IQueryInterceptor target) { var type = target.GetType(); const string methodName = "InvokeAsync"; MethodInfo? method; try { method = type.GetMethod(methodName, BindingFlags.Instance | BindingFlags.Public); } catch (AmbiguousMatchException) { method = null; } if (method == null) { throw new InvalidOperationException($"Type {type} declares no or multiple {methodName} methods."); } var methodReturnType = typeof(Task <object?>); if (method.ReturnType != methodReturnType) { throw new InvalidOperationException($"Method {type}.{methodName} must return {methodReturnType}."); } return(method.BuildMethodInjectionDelegate <QueryExecutionDelegate>( getTargetInstance: _ => Expression.Constant(target), getStaticArguments: (delegateParams, methodParam, _) => { if (methodParam.ParameterType == typeof(QueryContext)) { return delegateParams[0]; } if (methodParam.ParameterType == typeof(CancellationToken)) { return delegateParams[1]; } return null; }, getServiceProvider: delegateParams => Expression.MakeMemberAccess(delegateParams[0], s_contextScopedServicesProperty))); }
public FamilyQueryRepository(IQueryEventHandler queryEventHandlers, IQueryInterceptor queryInterceptor) : base(queryEventHandlers, queryInterceptor) { ObjectContext = Objects; }
public FamilyQueryRepository(IQueryInterceptor queryInterceptor) : this(new DefaultQueryEventHandlers(), queryInterceptor) { }
public DefaultRepositoryInterceptors(IQueryInterceptor queryInterceptor) { Check.NotNull(queryInterceptor, "queryInterceptor"); QueryInterceptor = queryInterceptor; }
public InRepoConfiguration WithQueryInterceptor(IQueryInterceptor interceptor) { RepositoryEventRegistry.Register(interceptor); return this; }
public static void Register(IQueryInterceptor interceptor) { _interceptors.Add(interceptor); }
public MongoDbQueryRepository(MongoDatabase mongoDatabase, IQueryInterceptor queryInterceptor) : this(mongoDatabase, new DefaultQueryEventHandlers(), queryInterceptor) { }
protected QueryRepositoryBase(IQueryInterceptor queryInterceptor) : this(new DefaultQueryEventHandlers(), queryInterceptor) { }
public void AddInterceptor(IQueryInterceptor interceptor) { _impl = _callWithInterception; _callWithInterception.AddInterceptor(interceptor); }
public InRepoConfiguration WithQueryInterceptor(IQueryInterceptor interceptor) { RepositoryEventRegistry.Register(interceptor); return(this); }
public EntityFrameworkQueryRepository(DbContext dbContext, IQueryEventHandler queryEventHandlers, IQueryInterceptor queryInterceptor) : base(queryEventHandlers, queryInterceptor) { Check.NotNull(dbContext, "dbContext"); ObjectContext = dbContext; }
public EntityFrameworkQueryRepository(DbContext dbContext, IQueryInterceptor queryInterceptor) : this(dbContext, new DefaultQueryEventHandlers(), queryInterceptor) { }
public InMemoryQueryRepository(IEnumerable <object> entities, IQueryEventHandler queryEventHandlers, IQueryInterceptor queryInterceptor) : base(queryEventHandlers, queryInterceptor) { Check.NotNull(entities, "entities"); ObjectContext = entities; }
public InMemoryQueryRepository(IEnumerable <object> entities, IQueryInterceptor queryInterceptor) : this(entities, new DefaultQueryEventHandlers(), queryInterceptor) { }
public MongoDbQueryRepository(MongoDatabase mongoDatabase, IQueryEventHandler queryEventHandlers, IQueryInterceptor queryInterceptor) : base(queryEventHandlers, queryInterceptor) { if (mongoDatabase == null) { throw new ArgumentNullException("MongoDatabase", "MongoDatabase is null."); } ObjectContext = mongoDatabase; }