Пример #1
0
        private TableModel CreateTableModel(DataRow tableRow)
        {
            TableModel tableModel = new TableModel();

            tableModel.Schema      = Convert.ToString(tableRow["Schema"]);
            tableModel.Name        = Convert.ToString(tableRow["Name"]);
            tableModel.Description = Convert.ToString(tableRow["Description"]);

            // Columns
            foreach (DataRow row in this._tTableColumns.Select(string.Format(System.Globalization.CultureInfo.InvariantCulture, "[Schema] = '{0}' AND [TableName] = '{1}'", tableModel.Schema, tableModel.Name)))
            {
                ColumnModel columnModel = this.CreateColumnModel(row);
                tableModel.Columns.Add(columnModel);
            }
            // Identity
            foreach (DataRow row in this._tIdentities.Select(string.Format(System.Globalization.CultureInfo.InvariantCulture, "[Schema] = '{0}' AND [TableName] = '{1}'", tableModel.Schema, tableModel.Name)))
            {
                IdentityModel identityModel = this.CreateIdentityModel(row);
                tableModel.Identity = identityModel;
            }
            // PrimaryKeys
            foreach (IGrouping <string, DataRow> row in this._tIndices.Select(string.Format(System.Globalization.CultureInfo.InvariantCulture, "[Schema] = '{0}' AND [TableName] = '{1}' AND [IsPrimaryKey] = 1", tableModel.Schema, tableModel.Name)).GroupBy(p => Convert.ToString(p["IndexName"])))
            {
                PrimaryKeyConstraintModel primaryKeyConstraintModel = this.CreatePrimaryKeyConstraintModel(row.ToArray());
                tableModel.Constraints.Add(primaryKeyConstraintModel);
            }
            // Indexes
            foreach (IGrouping <string, DataRow> row in this._tIndices.Select(string.Format(System.Globalization.CultureInfo.InvariantCulture, "[Schema] = '{0}' AND [TableName] = '{1}' AND [IsPrimaryKey] = 0", tableModel.Schema, tableModel.Name)).GroupBy(p => Convert.ToString(p["IndexName"])))
            {
                IndexModel indexModel = this.CreateIndexModel(row.ToArray());
                tableModel.Indexes.Add(indexModel);
            }

            return(tableModel);
        }
Пример #2
0
        public void ReadXml(System.Xml.XmlReader reader)
        {
            // Attributes
            while (reader.MoveToNextAttribute())
            {
            }

            reader.MoveToContent();

            // Elements
            if (!reader.IsEmptyElement)
            {
                reader.ReadStartElement();
                while (reader.NodeType == System.Xml.XmlNodeType.Element)
                {
                    switch (reader.Name)
                    {
                    case UniqueConstraintModel.XmlElement_Tag:
                    {
                        ConstraintModel constraint = new UniqueConstraintModel();
                        constraint.ReadXml(reader);
                        this.Add(constraint);
                    }
                    break;

                    case PrimaryKeyConstraintModel.XmlElement_Tag:
                    {
                        ConstraintModel constraint = new PrimaryKeyConstraintModel();
                        constraint.ReadXml(reader);
                        this.Add(constraint);
                    }
                    break;

                    case CheckConstraintModel.XmlElement_Tag:
                    {
                        ConstraintModel constraint = new CheckConstraintModel();
                        constraint.ReadXml(reader);
                        this.Add(constraint);
                    }
                    break;

                    case DefaultConstraintModel.XmlElement_Tag:
                    {
                        ConstraintModel constraint = new DefaultConstraintModel();
                        constraint.ReadXml(reader);
                        this.Add(constraint);
                    }
                    break;

                    default:
                        throw new InvalidOperationException(reader.Name);
                    }
                }
                reader.ReadEndElement();
            }
            else
            {
                reader.Read();
            }
        }
Пример #3
0
        private PrimaryKeyConstraintModel CreatePrimaryKeyConstraintModel(DataRow[] primaryKeyConstraintRows)
        {
            PrimaryKeyConstraintModel primaryKeyConstraintModel = new PrimaryKeyConstraintModel();

            primaryKeyConstraintModel.Name    = Convert.ToString(primaryKeyConstraintRows[0]["IndexName"]);
            primaryKeyConstraintModel.Columns = primaryKeyConstraintRows.Select(p => Convert.ToString(p["ColumnName"])).ToArray();
            return(primaryKeyConstraintModel);
        }
Пример #4
0
        public bool IsUnique()
        {
            PrimaryKeyConstraintModel primaryKeyModel = this.Database.Tables[this.DependentEnd.Schema, this.DependentEnd.Table].Constraints.OfType <PrimaryKeyConstraintModel>().FirstOrDefault();

            if (primaryKeyModel == null)
            {
                return(false);
            }

            return(this.DependentEnd.Columns.All(p => primaryKeyModel.Columns.Contains(p)));
        }
Пример #5
0
        public string[] GetPrimaryKeys()
        {
            foreach (ConstraintModel constraint in this.Constraints)
            {
                PrimaryKeyConstraintModel primaryKeyConstraint = constraint as PrimaryKeyConstraintModel;
                if (primaryKeyConstraint != null)
                {
                    return(primaryKeyConstraint.Columns);
                }
            }

            return(null);
        }