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); }
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(); } }
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); }
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))); }
public string[] GetPrimaryKeys() { foreach (ConstraintModel constraint in this.Constraints) { PrimaryKeyConstraintModel primaryKeyConstraint = constraint as PrimaryKeyConstraintModel; if (primaryKeyConstraint != null) { return(primaryKeyConstraint.Columns); } } return(null); }