Example #1
0
        public void LoadStructure(TableStructureMembers members, IDatabaseSource db)
        {
            if (db == null)
            {
                return;             // db not provided, perhaps all is loaded
            }
            if ((members & FilledMembers) == members)
            {
                return;                                       // all is loaded
            }
            var ts = db.InvokeLoadTableStructure(FullName, members) as TableStructure;

            MergeFrom(ts);
            // merge references, not very nice...
            if (ShouldCopy(ts, TableStructureMembers.ReferencedFrom))
            {
                foreach (var fk in ts.GetReferencedFrom())
                {
                    var pkt = ((DatabaseStructure)Database).FindOrCreateTable(fk.Table.FullName);
                    if (pkt.FindConstraint(fk) == null)
                    {
                        pkt._Constraints.Add(new ForeignKey(fk));
                    }
                }
            }
            FilledMembers |= members;
        }
Example #2
0
 public ConstraintsLoader(DbConnection conn, InformationSchema infoSchema, TableAnalyser analyser, NameWithSchema table, TableStructureMembers members, Condition dbnamecond)
 {
     m_conn       = conn;
     m_infoSchema = infoSchema;
     m_table      = table;
     m_analyser   = analyser;
     m_members    = members;
     m_dbnamecond = dbnamecond;
 }
        public static ITableStructure InvokeLoadStructure(this ITableSource table, TableStructureMembers members)
        {
            IPhysicalConnection conn = table.Connection;

            if (conn == null)
            {
                return(table.LoadTableStructure(members));
            }
            IAsyncResult async = conn.BeginInvoke((Func <TableStructureMembers, ITableStructure>)table.LoadTableStructure, null, members);

            Async.WaitFor(async);
            return((ITableStructure)conn.EndInvoke(async));
        }
 public void LoadFromXml_ForJob(XmlElement xml)
 {
     if (xml.GetAttribute("table") == "1")
     {
         TableMembers = TableStructureMembers.AllNoRefs;
     }
     if (xml.SelectSingleNode("Table") != null)
     {
         TableFilter = new List <NameWithSchema>();
     }
     foreach (XmlElement x in xml.SelectNodes("Table"))
     {
         TableFilter.Add(NameWithSchema.LoadFromXml(x));
     }
     foreach (XmlAttribute attr in xml.Attributes)
     {
         if (!attr.Name.StartsWith("detail."))
         {
             continue;
         }
         string type = attr.Name.Substring("detail.".Length);
         SpecificObjectOverride[type] = new SpecificObjectMembers();
         SpecificObjectOverride[type].ObjectDetail = true;
     }
     foreach (XmlElement child in xml)
     {
         if (child.Name == "Table")
         {
             continue;
         }
         var repr = SpecificRepresentationAddonType.Instance.FindByElement(child.Name);
         if (repr == null)
         {
             continue;
         }
         if (SpecificObjectOverride[repr.ObjectType] == null)
         {
             SpecificObjectOverride[repr.ObjectType] = new SpecificObjectMembers();
         }
         if (SpecificObjectOverride[repr.ObjectType].ObjectFilter == null)
         {
             SpecificObjectOverride[repr.ObjectType].ObjectFilter = new List <NameWithSchema>();
         }
         SpecificObjectOverride[repr.ObjectType].ObjectFilter.Add(NameWithSchema.LoadFromXml(child));
     }
     this.LoadPropertiesCore(xml);
 }
        public static ITableStructure InvokeLoadTableStructure(this IDatabaseSource conn, NameWithSchema name, TableStructureMembers members)
        {
            DatabaseStructureMembers dbmem = new DatabaseStructureMembers
            {
                TableFilter = new List <NameWithSchema> {
                    name
                },
                TableMembers = members
            };
            IDatabaseStructure dbs = conn.InvokeLoadStructure(dbmem, null);

            return(dbs.Tables[name]);
        }
Example #6
0
 public ITableStructure LoadTableStructure(TableStructureMembers members)
 {
     return(m_table);
 }
Example #7
0
 public static TableStructureMembers FilterConstraints(this TableStructureMembers members, bool canBeIndex)
 {
     return(members & (canBeIndex ? TableStructureMembers.Constraints : TableStructureMembers.ConstraintsNoIndexes));
 }
Example #8
0
 public static bool ContainsAnyConstraints(this TableStructureMembers members, bool canBeIndex)
 {
     return(members.FilterConstraints(canBeIndex) != 0);
 }
Example #9
0
 public static bool ContainsAnyColumns(this TableStructureMembers members)
 {
     return(members.Contains(TableStructureMembers.ColumnNames) ||
            members.Contains(TableStructureMembers.ColumnTypes));
 }
Example #10
0
 public static bool ContainsAll(this TableStructureMembers members, TableStructureMembers test)
 {
     return((members & test) == test);
 }
Example #11
0
        //public static TableStructure RemoveRe(this ITableStructure src, DatabaseCopyOptions copyOpts, ISqlDialect dialect)
        //{
        //    if (!copyOpts.CopyTable(src.FullName)) return null;
        //    TableStructure res = new TableStructure(src);
        //    res.MangleMappedTable(copyOpts, dialect);
        //    return res;
        //}

        public static bool Contains(this TableStructureMembers members, TableStructureMembers test)
        {
            return(members.ContainsAny(test));
        }
Example #12
0
 public ITableStructure LoadTableStructure(TableStructureMembers members)
 {
     return(Database.InvokeLoadViewStructure(FullName));
 }
Example #13
0
 public ITableStructure LoadTableStructure(TableStructureMembers members)
 {
     return(Database.LoadTableStructure(FullName, members));
 }
Example #14
0
 private bool ShouldCopy(ITableStructure src, TableStructureMembers member)
 {
     return(!FilledMembers.ContainsAll(member) && src.FilledMembers.ContainsAll(member));
 }