コード例 #1
0
 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();
     }
 }
コード例 #2
0
 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();
     }
 }
コード例 #3
0
        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());
        }
コード例 #4
0
        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();
        }
コード例 #5
0
 private void AddColumnMap(ColumnRelationship relationship)
 {
     this.AddColumnMap(((Column)relationship.ParentColumnRef.Object).Name, ((Column)relationship.ChildColumnRef.Object).Name);
 }
コード例 #6
0
        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;
            }
        }