Exemplo n.º 1
0
        /// <summary>
        /// Creates a query generator.
        /// </summary>
        /// <typeparam name="TMappedClass">The type of the mapped class.</typeparam>
        /// <param name="mappingInfo">The mapping information.</param>
        /// <returns>The requested query generator</returns>
        /// <exception cref="ArgumentNullException">mappingInfo</exception>
        /// <exception cref="ArgumentException">Provider not found</exception>
        public IGenerator <TMappedClass>?CreateGenerator <TMappedClass>(IMappingSource mappingInfo)
            where TMappedClass : class
        {
            if (mappingInfo?.GetChildMappings <TMappedClass>().Any() != true)
            {
                return(null);
            }

            var provider = mappingInfo.Source.Provider;

            if (!Providers.TryGetValue(provider, out var QueryProvider))
            {
                throw new ArgumentException("Provider not found: " + provider);
            }

            if (IsDebug)
            {
                Logger.Debug("Creating generator for type {TypeName:l} in {SourceName:l}", typeof(TMappedClass).GetName(), mappingInfo.Source.Name);
            }

            return(QueryProvider.CreateGenerator <TMappedClass>(mappingInfo));
        }