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);
        }
Exemplo n.º 3
0
        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());
        }
Exemplo n.º 4
0
        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);
        }