Exemplo n.º 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DynamicDbContextAdapter"/> class.
        /// </summary>
        /// <param name="dynamicDbContextFactory">The <see cref="ExportFactory{IDynamicDbContext}"/>.</param>
        /// <param name="instanceDescriptorFactory">The <see cref="IInstanceDescriptorFactory"/>.</param>
        /// <param name="instanceResolutionWalkerFactory">The <see cref="IInstanceResolutionWalker"/> factory.</param>
        /// <param name="queryResultHandlerProvider">The <see cref="IQueryResultHandlerProvider"/></param>
        /// <param name="queryableCallTreeTranslator">The <see cref="QueryableCallTreeTranslator"/>.</param>
        /// <param name="instanceRelationStore">The <see cref="IInstanceRelationStore"/>.</param>
        /// <param name="dynamicDbContextConfiguration">The configuration for the <see cref="IDynamicDbContext"/>.</param>
        /// <exception cref="ArgumentNullException">The value of '<paramref name="queryableCallTreeTranslator"/>', '<paramref name="instanceRelationStore"/>', '<paramref name="queryResultHandlerProvider"/>', '<paramref name="instanceDescriptorFactory"/>', '<paramref name="queryableCallTreeTranslator"/>' ,'<paramref name="dynamicDbContextFactory"/>' and '<paramref name="instanceResolutionWalkerFactory"/>' cannot be null.</exception>
        protected DynamicDbContextAdapter([NotNull] IDynamicDbContextFactory dynamicDbContextFactory,
                                          [NotNull] IInstanceDescriptorFactory instanceDescriptorFactory,
                                          [NotNull] ExportFactory <IInstanceResolutionWalker> instanceResolutionWalkerFactory,
                                          [NotNull] IQueryResultHandlerProvider queryResultHandlerProvider,
                                          [NotNull] IQueryableCallTreeTranslator queryableCallTreeTranslator,
                                          [NotNull] IInstanceRelationStore instanceRelationStore,
                                          [NotNull] DynamicDbContextConfiguration dynamicDbContextConfiguration)
        {
            if (dynamicDbContextFactory == null)
            {
                throw new ArgumentNullException(nameof(dynamicDbContextFactory));
            }

            if (instanceDescriptorFactory == null)
            {
                throw new ArgumentNullException(nameof(instanceDescriptorFactory));
            }

            if (instanceResolutionWalkerFactory == null)
            {
                throw new ArgumentNullException(nameof(instanceResolutionWalkerFactory));
            }

            if (queryResultHandlerProvider == null)
            {
                throw new ArgumentNullException(nameof(queryResultHandlerProvider));
            }

            if (queryableCallTreeTranslator == null)
            {
                throw new ArgumentNullException(nameof(queryableCallTreeTranslator));
            }

            if (instanceRelationStore == null)
            {
                throw new ArgumentNullException(nameof(instanceRelationStore));
            }

            if (dynamicDbContextConfiguration == null)
            {
                throw new ArgumentNullException(nameof(dynamicDbContextConfiguration));
            }

            this.instanceDescriptorFactory       = instanceDescriptorFactory;
            this.instanceResolutionWalkerFactory = instanceResolutionWalkerFactory;
            this.queryResultHandlerProvider      = queryResultHandlerProvider;
            this.queryableCallTreeTranslator     = queryableCallTreeTranslator;
            this.instanceRelationStore           = instanceRelationStore;
            this.dynamicDbContext            = dynamicDbContextFactory.CreateDynamicDbContext(dynamicDbContextConfiguration);
            this.createdDynamicDbSetAdapters = new ConcurrentDictionary <Type, Object>();

            this.CreateDynamidDbSetAdapters();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DynamicDbSetAdapter{T}"/> class.
        /// </summary>
        /// <param name="instances">The underlying <see cref="DbSet{InstanceDescriptor}"/>.</param>
        /// <param name="instanceDescriptorFactory">The <see cref="IInstanceDescriptorFactory"/>.</param>
        /// <param name="instanceResolutionWalkerFactory">The <see cref="ExportFactory{IInstanceResolutionWalker}"/> which create new instances of <see cref="IInstanceResolutionWalker"/>.</param>
        /// <param name="queryResultHandlerProvider">The <see cref="IQueryResultHandlerProvider"/>.</param>
        /// <param name="instanceRelationStore">The <see cref="IInstanceRelationStore"/>.</param>
        /// <param name="queryableCallTreeTranslator">The <see cref="IQueryableCallTreeTranslator"/>.</param>
        public DynamicDbSetAdapter([NotNull] DbSet <InstanceDescriptor> instances, [NotNull] IInstanceDescriptorFactory instanceDescriptorFactory, [NotNull] ExportFactory <IInstanceResolutionWalker> instanceResolutionWalkerFactory, [NotNull] IQueryResultHandlerProvider queryResultHandlerProvider, [NotNull] IInstanceRelationStore instanceRelationStore, [NotNull] IQueryableCallTreeTranslator queryableCallTreeTranslator)
        {
            if (instances == null)
            {
                throw new ArgumentNullException(nameof(instances));
            }

            if (instanceDescriptorFactory == null)
            {
                throw new ArgumentNullException(nameof(instanceDescriptorFactory));
            }

            if (instanceResolutionWalkerFactory == null)
            {
                throw new ArgumentNullException(nameof(instanceResolutionWalkerFactory));
            }

            if (instanceRelationStore == null)
            {
                throw new ArgumentNullException(nameof(instanceRelationStore));
            }

            if (queryResultHandlerProvider == null)
            {
                throw new ArgumentNullException(nameof(queryResultHandlerProvider));
            }

            if (queryableCallTreeTranslator == null)
            {
                throw new ArgumentNullException(nameof(queryableCallTreeTranslator));
            }

            this.instances = instances;
            this.instanceDescriptorFactory       = instanceDescriptorFactory;
            this.instanceResolutionWalkerFactory = instanceResolutionWalkerFactory;
            this.queryResultHandlerProvider      = queryResultHandlerProvider;
            this.queryableCallTreeTranslator     = queryableCallTreeTranslator;
            this.instanceRelationStore           = instanceRelationStore;

            this.instanceRelationStore.InstanceRelationChanged += this.InstanceRelationStoreOnInstanceRelationChanged;

            this.local = new ObservableCollection <T>();
        }