/// <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)); }