Exemplo n.º 1
0
        static void CreateDummyModelsForRhinoSecurityClasses(ActiveRecordModelCollection models, IConfigurationSource source)
        {
            var modelBuilder = new ActiveRecordModelBuilder();

            foreach (Type type in RhinoSecurity.Entities)
            {
                if (!models.Contains(type))
                {
                    modelBuilder.CreateDummyModelFor(type);
                }
            }
        }
Exemplo n.º 2
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);
                    }
                }
            }
        }