private ReferenceComponentMapping CreateInstance()
        {
            var property = new DummyPropertyInfo("ComponentProperty", typeof(ComponentTarget)).ToMember();
            var instance = new ReferenceComponentMapping(ComponentType.Component, property, typeof(ComponentTarget), typeof(Target), null);

            instance.AssociateExternalMapping(new ExternalComponentMapping(ComponentType.Component));

            return(instance);
        }
Example #2
0
        public override void establish_context()
        {
            visitor = new ComponentColumnPrefixVisitor();
            reference_with_a_prefix = new ReferenceComponentMapping(ComponentType.Component, new DummyPropertyInfo("PROPERTY", typeof(Target)).ToMember(), typeof(ComponentTarget), typeof(Target), column_prefix);
            reference_with_a_prefix.AssociateExternalMapping(new ExternalComponentMapping(ComponentType.Component));

            reference_without_a_prefix = new ReferenceComponentMapping(ComponentType.Component, new DummyPropertyInfo("PROPERTY", typeof(Target)).ToMember(), typeof(ComponentTarget), typeof(Target), null);

            var external_mapping = new ExternalComponentMapping(ComponentType.Component);

            external_mapping.AddProperty(property_with_column("propertyColumn"));

            reference_without_a_prefix.AssociateExternalMapping(external_mapping);
        }
        public override void ProcessComponent(ReferenceComponentMapping mapping)
        {
            var providers = componentProviders.Where(x => x.Type == mapping.Type);

            if (!providers.Any())
            {
                throw new MissingExternalComponentException(mapping.Type, mapping.ContainingEntityType, mapping.Member);
            }
            if (providers.Count() > 1)
            {
                throw new AmbiguousComponentReferenceException(mapping.Type, mapping.ContainingEntityType, mapping.Member);
            }

            mapping.AssociateExternalMapping(providers.Single().GetComponentMapping());

            mapping.MergedModel.AcceptVisitor(this);
        }
Example #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);
        }