private void AppendParentTableColumns(Relation relation) { for (int jj = 0; jj < relation.ColumnRelationships.Count; jj++) { ColumnRelationship columnRelationship = relation.ColumnRelationships[jj]; sb.Append(" ["+ ((Column)columnRelationship.ParentColumnRef.Object).DatabaseName + "]"); if (jj < relation.ColumnRelationships.Count - 1) { sb.Append(","); } sb.AppendLine(); } }
private void AppendChildTableColumns(Relation relation) { for (int kk = 0; kk < relation.ColumnRelationships.Count; kk++) { ColumnRelationship columnRelationship = relation.ColumnRelationships[kk]; sb.Append(" ["+ ((Column)columnRelationship.ChildColumnRef.Object).DatabaseName + "]"); if (kk < relation.ColumnRelationships.Count - 1) { sb.Append(","); } sb.AppendLine(); } }
private string GetFieldNames(Relation relation) { StringBuilder retval = new StringBuilder(); for (int kk = 0; kk < relation.ColumnRelationships.Count; kk++) { ColumnRelationship columnRelationship = relation.ColumnRelationships[kk]; Column parentColumn = ((Column)columnRelationship.ParentColumnRef.Object); Column childColumn = ((Column)columnRelationship.ChildColumnRef.Object); Table parentTable = (Table)parentColumn.ParentTableRef.Object; Table childTable = (Table)childColumn.ParentTableRef.Object; retval.Append("[" + parentTable.DatabaseName + "].[" + parentColumn.DatabaseName + "] -> "); retval.Append("[" + childTable.DatabaseName + "].[" + childColumn.DatabaseName + "]"); if (kk < relation.ColumnRelationships.Count - 1) { retval.Append(", "); } } return(retval.ToString()); }
private void cmdOK_Click(object sender, System.EventArgs e) { if (cboChildTable.Text == "") { MessageBox.Show("You must specify a foreign table.", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } else if (this.lvwColumns.Items.Count == 0) { MessageBox.Show("You must specify at least one set of key mappings.", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } //Save var root = (ModelRoot)this.Relation.Root; this.Relation.ParentTableRef = root.Database.Tables[lblPrimaryTable.Text].CreateRef(); this.Relation.ChildTableRef = root.Database.Tables[cboChildTable.Text].CreateRef(); this.Relation.Enforce = chkEnforce.Checked; this.Relation.ColumnRelationships.Clear(); foreach (ListViewItem item in this.lvwColumns.Items) { var relationship = new ColumnRelationship(this.Relation.Root); relationship.ParentColumnRef = ((Column)root.Database.Tables[lblPrimaryTable.Text].Columns[item.SubItems[0].Text].Object).CreateRef(); relationship.ChildColumnRef = ((Column)root.Database.Tables[cboChildTable.Text].Columns[item.SubItems[1].Text].Object).CreateRef(); this.Relation.ColumnRelationships.Add(relationship); } this.Relation.RoleName = txtRole.Text; //if ((!string.IsNullOrEmpty(cboParentTable.Text)) && (!string.IsNullOrEmpty(cboChildTable.Text))) // this.Relation.RoleName = cboParentTable.Text + "_" + cboChildTable.Text; //else // this.Relation.RoleName = string.Empty; this.DialogResult = DialogResult.OK; this.Close(); }
private void AddColumnMap(ColumnRelationship relationship) { this.AddColumnMap(((Column)relationship.ParentColumnRef.Object).Name, ((Column)relationship.ChildColumnRef.Object).Name); }
public virtual void Initialize(IModelObject model) { try { _model = (ModelRoot)model; var hasMetaData = false; foreach (var table in (from x in _model.Database.Tables where x.Generated orderby x.Name select x)) { if (table.CreateMetaData) { hasMetaData = true; } } Table projectItemDataType = null; if (hasMetaData) { #region Create the PROPERTY_ITEM_DATA_TYPE table projectItemDataType = _model.Database.Tables.Add("PROPERTY_ITEM_DATA_TYPE"); projectItemDataType.IsMetaDataMaster = true; Column column = null; column = _model.Database.Columns.Add("property_item_data_type_id"); column.ParentTableRef = projectItemDataType.CreateRef(); column.DataType = System.Data.SqlDbType.Int; column.PrimaryKey = true; column.Identity = IdentityTypeConstants.None; column.AllowNull = false; projectItemDataType.Columns.Add(column.CreateRef()); column = _model.Database.Columns.Add("name"); column.ParentTableRef = projectItemDataType.CreateRef(); column.DataType = System.Data.SqlDbType.VarChar; column.Length = 50; column.AllowNull = false; projectItemDataType.Columns.Add(column.CreateRef()); #endregion } foreach (var table in (from x in _model.Database.Tables where x.Generated orderby x.Name select x)) { if (table.CreateMetaData) { Column column = null; #region Create the PROPERTY_ITEM_DEFINE table var projectItemDefineTable = _model.Database.Tables.Add(table.DatabaseName + "_PROPERTY_ITEM_DEFINE"); projectItemDefineTable.IsMetaDataDefinition = true; column = _model.Database.Columns.Add("property_item_define_id"); column.ParentTableRef = projectItemDefineTable.CreateRef(); column.DataType = System.Data.SqlDbType.Int; column.PrimaryKey = true; column.Identity = IdentityTypeConstants.Database; column.AllowNull = false; projectItemDefineTable.Columns.Add(column.CreateRef()); column = _model.Database.Columns.Add("name"); column.ParentTableRef = projectItemDefineTable.CreateRef(); column.DataType = System.Data.SqlDbType.VarChar; column.Length = 50; column.AllowNull = false; column.UIVisible = true; column.SortOrder = 0; column.FriendlyName = "Name"; projectItemDefineTable.Columns.Add(column.CreateRef()); column = _model.Database.Columns.Add("property_item_data_type"); column.EnumType = "PropertyBagDataTypeConstants"; column.ParentTableRef = projectItemDefineTable.CreateRef(); column.DataType = System.Data.SqlDbType.Int; column.UIVisible = true; column.SortOrder = 1; column.FriendlyName = "Data type"; column.AllowNull = false; projectItemDefineTable.Columns.Add(column.CreateRef()); //RELATIONRELATIONRELATIONRELATIONRELATIONRELATIONRELATIONRELATIONRELATIONRELATION //Add a relation to from the datatype table to this one var relation2 = _model.Database.Relations.Add(); relation2.ParentTableRef = projectItemDataType.CreateRef(); relation2.ChildTableRef = projectItemDefineTable.CreateRef(); var relationship = new ColumnRelationship((INHydrateModelObject)relation2.Root); relationship.ParentColumnRef = ((Column)projectItemDataType.Columns[0].Object).CreateRef(); relationship.ChildColumnRef = column.CreateRef(); relation2.ColumnRelationships.Add(relationship); projectItemDataType.Relationships.Add(relation2.CreateRef()); //RELATIONRELATIONRELATIONRELATIONRELATIONRELATIONRELATIONRELATIONRELATIONRELATION column = _model.Database.Columns.Add("group"); column.ParentTableRef = projectItemDefineTable.CreateRef(); column.DataType = System.Data.SqlDbType.VarChar; column.Length = 50; column.AllowNull = true; column.UIVisible = true; column.SortOrder = 2; column.FriendlyName = "Group"; projectItemDefineTable.Columns.Add(column.CreateRef()); column = _model.Database.Columns.Add("sort_index"); column.ParentTableRef = projectItemDefineTable.CreateRef(); column.DataType = System.Data.SqlDbType.Int; column.AllowNull = false; column.UIVisible = true; column.SortOrder = 3; column.FriendlyName = "Sort order"; projectItemDefineTable.Columns.Add(column.CreateRef()); column = _model.Database.Columns.Add("minimum_value"); column.ParentTableRef = projectItemDefineTable.CreateRef(); column.DataType = System.Data.SqlDbType.VarChar; column.Length = 50; column.UIVisible = true; column.SortOrder = 4; column.FriendlyName = "Minimum value"; projectItemDefineTable.Columns.Add(column.CreateRef()); column = _model.Database.Columns.Add("maximum_value"); column.ParentTableRef = projectItemDefineTable.CreateRef(); column.DataType = System.Data.SqlDbType.VarChar; column.Length = 50; column.UIVisible = true; column.SortOrder = 5; column.FriendlyName = "Maximum value"; projectItemDefineTable.Columns.Add(column.CreateRef()); column = _model.Database.Columns.Add("max_length"); column.ParentTableRef = projectItemDefineTable.CreateRef(); column.DataType = System.Data.SqlDbType.Int; column.UIVisible = true; column.SortOrder = 6; column.FriendlyName = "Maximum Length"; projectItemDefineTable.Columns.Add(column.CreateRef()); column = _model.Database.Columns.Add("is_required"); column.ParentTableRef = projectItemDefineTable.CreateRef(); column.DataType = System.Data.SqlDbType.Bit; column.AllowNull = false; column.UIVisible = true; column.SortOrder = 7; column.FriendlyName = "Required"; projectItemDefineTable.Columns.Add(column.CreateRef()); #endregion #region Create the PROPERTY_ITEM table var projectItemValueTable = _model.Database.Tables.Add(table.DatabaseName + "_PROPERTY_ITEM"); projectItemValueTable.IsMetaData = true; column = _model.Database.Columns.Add("property_item_id"); column.ParentTableRef = projectItemValueTable.CreateRef(); column.DataType = System.Data.SqlDbType.Int; column.PrimaryKey = true; column.AllowNull = false; column.Identity = IdentityTypeConstants.Database; projectItemValueTable.Columns.Add(column.CreateRef()); column = _model.Database.Columns.Add("property_item_define_id"); column.ParentTableRef = projectItemValueTable.CreateRef(); column.DataType = System.Data.SqlDbType.Int; column.AllowNull = false; projectItemValueTable.Columns.Add(column.CreateRef()); column = _model.Database.Columns.Add("item_value"); column.ParentTableRef = projectItemValueTable.CreateRef(); column.DataType = System.Data.SqlDbType.VarChar; column.Length = 1024; column.AllowNull = false; projectItemValueTable.Columns.Add(column.CreateRef()); //Create all primary keys foreach (var pkColumn in table.PrimaryKeyColumns.OrderBy(x => x.Name)) { column = _model.Database.Columns.Add(pkColumn.DatabaseName); column.ParentTableRef = projectItemValueTable.CreateRef(); column.DataType = pkColumn.DataType; column.Length = pkColumn.Length; column.AllowNull = false; projectItemValueTable.Columns.Add(column.CreateRef()); } //Add relationship between Definition and Value table if (true) { var relation = new Relation(this._model); relation.ParentTableRef = projectItemDefineTable.CreateRef(); relation.ChildTableRef = projectItemValueTable.CreateRef(); var colRel = new ColumnRelationship(_model); colRel.ParentColumnRef = projectItemDefineTable.Columns["property_item_define_id"]; colRel.ChildColumnRef = projectItemValueTable.Columns["property_item_define_id"]; relation.ColumnRelationships.Add(colRel); relation.RoleName = string.Empty; _model.Database.Relations.Add(relation); projectItemDefineTable.Relationships.Add(relation.CreateRef()); } //Add relationship between Value table and primary table if (true) { var relation = new Relation(this._model); relation.ParentTableRef = table.CreateRef(); relation.ChildTableRef = projectItemValueTable.CreateRef(); foreach (var pkColumn in table.PrimaryKeyColumns.OrderBy(x => x.Name)) { var colRel = new ColumnRelationship(_model); colRel.ParentColumnRef = table.Columns[pkColumn.DatabaseName]; colRel.ChildColumnRef = projectItemValueTable.Columns[pkColumn.DatabaseName]; relation.RoleName = string.Empty; relation.ColumnRelationships.Add(colRel); table.Relationships.Add(relation.CreateRef()); } _model.Database.Relations.Add(relation); } #endregion } } //_model = (ModelRoot)model; } catch (Exception ex) { throw; } }