예제 #1
0
        private string Process(ActiveRecordModelBuilder builder, ActiveRecordModel model)
        {
            GraphConnectorVisitor connectorVisitor = new
                GraphConnectorVisitor(builder.Models);
            connectorVisitor.VisitNode(model);

            SemanticVerifierVisitor semanticVisitor = new
                SemanticVerifierVisitor(builder.Models);
            semanticVisitor.VisitNode(model);

            XmlGenerationVisitor xmlVisitor = new XmlGenerationVisitor();
            xmlVisitor.CreateXml(model);

            return xmlVisitor.Xml;
        }
예제 #2
0
        private string Process(ActiveRecordModelBuilder builder, ActiveRecordModel model)
        {
            GraphConnectorVisitor connectorVisitor = new GraphConnectorVisitor(builder.Models);

            connectorVisitor.VisitNode(model);

            SemanticVerifierVisitor semanticVisitor = new SemanticVerifierVisitor(builder.Models);

            semanticVisitor.VisitNode(model);

            XmlGenerationVisitor xmlVisitor = new XmlGenerationVisitor();

            xmlVisitor.CreateXml(model);

            return(xmlVisitor.Xml);
        }
예제 #3
0
        private static void RegisterTypes(ISessionFactoryHolder holder, IConfigurationSource source, IEnumerable <Type> types,
                                          bool ignoreProblematicTypes)
        {
            lock (lockConfig)
            {
                ActiveRecordModelCollection models = BuildModels(holder, source, types, ignoreProblematicTypes);

                GraphConnectorVisitor connectorVisitor = new GraphConnectorVisitor(models);
                connectorVisitor.VisitNodes(models);

                ModelsDelegate modelsCreatedHandler = ModelsCreated;
                if (modelsCreatedHandler != null)
                {
                    modelsCreatedHandler(models, source);
                }

                SemanticVerifierVisitor semanticVisitor = new SemanticVerifierVisitor(models);
                semanticVisitor.VisitNodes(models);

                ModelsDelegate modelsValidatedHandler = ModelsValidated;
                if (modelsValidatedHandler != null)
                {
                    modelsValidatedHandler(models, source);
                }

                AddXmlToNHibernateCfg(holder, models);

                AddXmlToNHibernateFromAssmebliesAttributes(holder, models);

                SessionFactoryHolderDelegate registeredInConfigurationHandler = MappingRegisteredInConfiguration;
                if (registeredInConfigurationHandler != null)
                {
                    registeredInConfigurationHandler(holder);
                }

                if (source.VerifyModelsAgainstDBSchema)
                {
                    VerifySchema(models);
                }
            }
        }
예제 #4
0
        /// <summary>
        /// Initialize the mappings using the configuration and
        /// the list of types
        /// </summary>
        public static void Initialize(IConfigurationSource source, params Type[] types)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }
            if (types == null)
            {
                throw new ArgumentNullException("types");
            }

            // First initialization
            ISessionFactoryHolder holder =
                CreateSessionFactoryHolderImplementation(source);

            holder.ThreadScopeInfo =
                CreateThreadScopeInfoImplementation(source);

            RaiseSessionFactoryHolderCreated(holder);

            ActiveRecordModel.type2Model.Clear();
            ActiveRecordBase._holder = holder;

            // Base configuration
            SetUpConfiguration(source, typeof(ActiveRecordBase), holder);

            ActiveRecordModelBuilder builder = new ActiveRecordModelBuilder();

            ActiveRecordModelCollection models = builder.Models;

            foreach (Type type in types)
            {
                if (models.Contains(type) ||
                    type == typeof(ActiveRecordBase) || type == typeof(ActiveRecordValidationBase))
                {
                    continue;
                }
                else if (type.IsAbstract && typeof(ActiveRecordBase).IsAssignableFrom(type))
                {
                    SetUpConfiguration(source, type, holder);

                    continue;
                }
                else if (!IsActiveRecordType(type))
                {
                    continue;
                }

                builder.Create(type);
            }

            GraphConnectorVisitor connectorVisitor = new GraphConnectorVisitor(models);

            connectorVisitor.VisitNodes(models);

            SemanticVerifierVisitor semanticVisitor = new SemanticVerifierVisitor(models);

            semanticVisitor.VisitNodes(models);

            XmlGenerationVisitor xmlVisitor = new XmlGenerationVisitor();

            foreach (ActiveRecordModel model in models)
            {
                Configuration cfg = holder.GetConfiguration(holder.GetRootType(model.Type));

                if (!model.IsNestedType && !model.IsDiscriminatorSubClass && !model.IsJoinedSubClass)
                {
                    xmlVisitor.Reset(); xmlVisitor.CreateXml(model);

                    String xml = xmlVisitor.Xml;

                    if (xml != String.Empty)
                    {
                        cfg.AddXmlString(xml);
                    }
                }
            }
        }