Ejemplo n.º 1
0
        private void ProcessPrimaryKey(MetaInfoTable table)
        {
            metaProvider.GetPrimaryKey(table);
            if (table.PrimaryKey != null)
            {
                XmlNode pkNode = md.CreateElement("PrimaryId");
                if (table.PrimaryKey.Columns.Count > 1)
                {
                    md.AddAttribute("name", table.PrimaryKey.Name);
                }
                md.AddAttribute("persistentName", table.PrimaryKey.PersistentName);
                foreach (MetaInfoColumn col in table.PrimaryKey.Columns)
                {
                    md.CreateElement("OnAttribute");
                    md.AddAttribute("name", col.Name);
                    pkNode.AppendChild(md.CurrentNode);
                }

                // Try to attach generator by name
                if (table.PrimaryKey.Columns.Count == 1)
                {
                    IMacroExpander macro = Genie.Config.Macro.CreateChild();
                    macro.SetMacro("%TABLE%", table.Name);
                    string            generatorTemplate = PersistenceLayerConfig.NamingConvention.Params.ValueByName("Generator.Template", "%TABLE%");
                    MetaInfoGenerator gen = Generators.FindByName(table.Schema, macro.Subst(generatorTemplate), false);
                    if (gen == null)
                    {
                        macro.SetMacro("%TABLE%", table.PersistentName);
                        gen = Generators.FindByPersistentName(table.PersistentSchema, macro.Subst(generatorTemplate), false);
                    }
                    if (gen != null)
                    {
                        md.CurrentNode = pkNode;
                        md.AddAttribute("generator", gen.Name);
                        gen.Node = md.Document.DocumentElement.RemoveChild(gen.Node);
                        md.Document.DocumentElement.InsertBefore(gen.Node, table.Node);
                    }
                }

                table.Node.AppendChild(pkNode);
            }
        }
Ejemplo n.º 2
0
        public void GetGenerators(MetaInfoGenerators generators)
        {
            generators.Clear();
            foreach (DataRow row in SelectData(GetGeneratorsSql()).Rows)
            {
                MetaInfoGenerator gen = new MetaInfoGenerator();
                gen.PersistentSchema = row[SqlColName_Schema].ToString();
                gen.PersistentName   = row[SqlColName_Name].ToString();
                gen.Schema           = Importer.Naming.Convert(gen.PersistentSchema);
                gen.Name             = Importer.Naming.Convert(gen.PersistentName);
                gen.MinValue         = row[SqlColName_GeneratorMinValue].ToString();
                gen.MaxValue         = row[SqlColName_GeneratorMaxValue].ToString();
                gen.Increment        = row[SqlColName_GeneratorIncrement].ToString();
                gen.Type             = (GeneratorType)int.Parse(row[SqlColName_GeneratorType].ToString());

                gen.Schema = Importer.Naming.Convert(gen.PersistentSchema);
                gen.Name   = Importer.Naming.Convert(gen.PersistentName);

                generators.Add(gen);

                Logger.TraceLine("Generator {0} imported", gen.FullPersistentName);
            }
            Logger.ProgressStep();
        }