Exemplo n.º 1
0
        private static void AddXmlToNHibernateFromAssmebliesAttributes(ISessionFactoryHolder holder, ActiveRecordModelCollection models)
        {
            Iesi.Collections.Generic.ISet <Assembly> assembliesGeneratedXmlFor = new HashedSet <Assembly>();
            AssemblyXmlGenerator assemblyXmlGenerator = new AssemblyXmlGenerator();

            foreach (ActiveRecordModel model in models)
            {
                if (assembliesGeneratedXmlFor.Contains(model.Type.Assembly))
                {
                    continue;
                }

                assembliesGeneratedXmlFor.Add(model.Type.Assembly);

                Configuration config = holder.GetConfiguration(holder.GetRootType(model.Type));

                string[] configurations = assemblyXmlGenerator.CreateXmlConfigurations(model.Type.Assembly);

                foreach (string xml in configurations)
                {
                    if (xml != string.Empty)
                    {
                        config.AddXmlString(xml);
                    }
                }
            }

            foreach (Assembly assembly in registeredAssemblies)
            {
                if (assembliesGeneratedXmlFor.Contains(assembly))
                {
                    continue;
                }

                assembliesGeneratedXmlFor.Add(assembly);

                Configuration config = holder.GetConfiguration(holder.GetRootType(typeof(ActiveRecordBase)));

                string[] configurations = assemblyXmlGenerator.CreateXmlConfigurations(assembly);

                foreach (string xml in configurations)
                {
                    if (xml != string.Empty)
                    {
                        config.AddXmlString(xml);
                    }
                }
            }
        }
Exemplo n.º 2
0
        internal TableMappings MapTables(IEnumerable <AptifyEntityMetadata> entities, ActiveRecordModelCollection models)
        {
            var mappings = new TableMappings( );

            var visitors = new List <IVisitor>
            {
                new ModelVisitor(entities, mappings),
                new HasManyVisitor(entities, mappings),
                new BelongsToVisitor(mappings),
                new PropertyVisitor(mappings),
            };

            foreach (IVisitor visitor in visitors)
            {
                foreach (ActiveRecordModel model in models)
                {
                    visitor.VisitModel(model);
                }
            }

            return(mappings);
        }