public ExternalComponentMapping Resolve(ComponentResolutionContext context, IEnumerable<IExternalComponentMappingProvider> componentProviders) { var providers = componentProviders.Where(x => x.Type == context.ComponentType); if (providers.Count() > 1) throw new AmbiguousComponentReferenceException(context.ComponentType, context.EntityType, context.ComponentMember); var provider = providers.SingleOrDefault(); if (provider == null) return null; return provider.GetComponentMapping(); }
public override void ProcessComponent(ReferenceComponentMapping mapping) { var context = new ComponentResolutionContext { ComponentType = mapping.Type, ComponentMember = mapping.Member, EntityType = mapping.ContainingEntityType }; var component = resolvers .Select(x => x.Resolve(context, componentProviders)) .FirstOrDefault(x => x != null); if (component == null) throw new MissingExternalComponentException(mapping.Type, mapping.ContainingEntityType, mapping.Member); mapping.AssociateExternalMapping(component); mapping.MergedModel.AcceptVisitor(this); }
public ExternalComponentMapping Resolve(ComponentResolutionContext context, IEnumerable <IExternalComponentMappingProvider> componentProviders) { var providers = componentProviders.Where(x => x.Type == context.ComponentType); if (providers.Count() > 1) { throw new AmbiguousComponentReferenceException(context.ComponentType, context.EntityType, context.ComponentMember); } var provider = providers.SingleOrDefault(); if (provider == null) { return(null); } return(provider.GetComponentMapping()); }
public override void ProcessComponent(ReferenceComponentMapping mapping) { var context = new ComponentResolutionContext { ComponentType = mapping.Type, ComponentMember = mapping.Member, EntityType = mapping.ContainingEntityType }; var component = resolvers .Select(x => x.Resolve(context, componentProviders)) .FirstOrDefault(x => x != null); if (component == null) { throw new MissingExternalComponentException(mapping.Type, mapping.ContainingEntityType, mapping.Member); } mapping.AssociateExternalMapping(component); mapping.MergedModel.AcceptVisitor(this); }