public void HasMany()
        {
            InitKernel();
            IRelationshipBuilder relService = ObtainService();

            TableDefinition blogTable;
            TableDefinition postTable;

            BuildBlogPostsStructure(out blogTable, out postTable);

            ActiveRecordDescriptor desc       = new ActiveRecordDescriptor("Blog");
            ActiveRecordDescriptor targetDesc = new ActiveRecordDescriptor("Post");

            RelationshipInfo info = new RelationshipInfo(AssociationEnum.HasMany, desc, targetDesc);

            info.ChildCol = new ColumnDefinition("blog_id", false, true, true, false, OleDbType.Numeric);

            ActiveRecordPropertyRelationDescriptor propDesc = relService.Build(info);

            Assert.IsNotNull(propDesc);
            Assert.IsNotNull(propDesc as ActiveRecordHasManyDescriptor);
            Assert.AreEqual("Posts", propDesc.PropertyName);
            Assert.AreEqual(targetDesc, propDesc.TargetType);
            Assert.AreEqual("blog_id", propDesc.ColumnName);
        }
Exemplo n.º 2
0
        private void PopulateInfoIntoDescriptor(RelationshipInfo info, ActiveRecordPropertyRelationDescriptor desc)
        {
            desc.Insert  = info.Insert;
            desc.Update  = info.Update;
            desc.Inverse = info.Inverse;
            desc.Proxy   = info.UseProxy;

            desc.Cascade   = info.Cascade;
            desc.OuterJoin = info.OuterJoin;

            desc.Where   = info.Where;
            desc.OrderBy = info.OrderBy;
        }
Exemplo n.º 3
0
        private void okButton_Click(object sender, System.EventArgs e)
        {
            if (_association == AssociationEnum.Undefined)
            {
                cancelButton_Click(sender, e);
                return;
            }

            try
            {
                RelationshipInfo info = new RelationshipInfo(_association, _descriptor, SelectedTarget);

                info.ParentCol        = SelectedParentCol;
                info.ChildCol         = SelectedRelatedCol;
                info.AssociationTable = SelectedAssociationTable;

                info.Where     = where.Text;
                info.OrderBy   = order.Text;
                info.OuterJoin = outerJoin.Text;

                // TODO: Add checkbox for proxy
                info.UseProxy = false;

                info.Insert  = insertButton.Checked;
                info.Update  = updateButton.Checked;
                info.Lazy    = lazyButton.Checked;
                info.Cascade = cascade.SelectedText;

                ActiveRecordPropertyRelationDescriptor prop = _relationBuilder.Build(info);

                _descriptor.PropertiesRelations.Add(prop);
            }
            catch (Exception ex)
            {
                String message = String.Format("Something is missing... \r\n\r\n{0}", ex.Message);
                MessageBox.Show(this, message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            DialogResult = DialogResult.OK;
        }
Exemplo n.º 4
0
        public ActiveRecordPropertyRelationDescriptor Build(RelationshipInfo info)
        {
            ActiveRecordPropertyRelationDescriptor desc = null;

            if (info.Association == AssociationEnum.BelongsTo)
            {
                desc = CreateBelongsToRelation(info);
            }
            else if (info.Association == AssociationEnum.HasMany)
            {
                desc = CreateHasManyRelation(info);
            }
            else if (info.Association == AssociationEnum.HasAndBelongsToMany)
            {
                desc = CreateHasManyAndBelongsToRelation(info);
            }

            PopulateInfoIntoDescriptor(info, desc);

            return(desc);
        }
Exemplo n.º 5
0
        private void EditRelation_Click(object sender, System.EventArgs e)
        {
            if (listView2.SelectedItems.Count != 0)
            {
                ActiveRecordPropertyRelationDescriptor prop = listView2.SelectedItems[0].Tag as ActiveRecordPropertyRelationDescriptor;

                using (EditRelationDialog editDlg = new EditRelationDialog(_descriptor, _project, prop))
                {
                    if (editDlg.ShowDialog(this) == DialogResult.OK)
                    {
                        _descriptor.PropertiesRelations.Remove(prop);

                        FillClassRelationships(_descriptor);
                    }
                }
            }
            else
            {
                MessageBox.Show(this.Owner, "Select an existing relationship first.");
            }
        }
        public void HasÁndBelongsToMany()
        {
            InitKernel();
            IRelationshipBuilder relService = ObtainService();

            DatabaseDefinition dbdef = new DatabaseDefinition("alias");

            TableDefinition compTable = new TableDefinition("companies", dbdef);

            compTable.AddColumn(new ColumnDefinition("id", true, false, true, false, OleDbType.Integer));
            compTable.AddColumn(new ColumnDefinition("name", false, false, false, false, OleDbType.VarChar));

            TableDefinition peopleTable = new TableDefinition("people", dbdef);

            peopleTable.AddColumn(new ColumnDefinition("id", true, false, true, false, OleDbType.Integer));
            peopleTable.AddColumn(new ColumnDefinition("name", false, false, false, false, OleDbType.VarChar));

            TableDefinition assocTable = new TableDefinition("companiespeople", dbdef);

            assocTable.AddColumn(new ColumnDefinition("comp_id", true, true, true, false, OleDbType.Integer));
            assocTable.AddColumn(new ColumnDefinition("person_id", true, true, false, false, OleDbType.Integer));

            ActiveRecordDescriptor desc       = new ActiveRecordDescriptor("Company");
            ActiveRecordDescriptor targetDesc = new ActiveRecordDescriptor("Person");

            RelationshipInfo info = new RelationshipInfo(AssociationEnum.HasAndBelongsToMany, desc, targetDesc);

            info.AssociationTable = assocTable;
            info.ParentCol        = new ColumnDefinition("comp_id", false, true, false, true, OleDbType.Integer);
            info.ChildCol         = new ColumnDefinition("person_id", false, true, false, true, OleDbType.Integer);

            ActiveRecordPropertyRelationDescriptor propDesc = relService.Build(info);

            Assert.IsNotNull(propDesc as ActiveRecordHasAndBelongsToManyDescriptor);
            Assert.IsNotNull(propDesc);
            Assert.AreEqual("People", propDesc.PropertyName);
            Assert.AreEqual(targetDesc, propDesc.TargetType);
            Assert.AreEqual("person_id", propDesc.ColumnName);
            Assert.AreEqual("comp_id", (propDesc as ActiveRecordHasAndBelongsToManyDescriptor).ColumnKey);
        }
Exemplo n.º 7
0
        public override void Deactivated(IDictionary context)
        {
            base.Deactivated(context);

            BuildContext           buildCtx = context["buildcontext"] as BuildContext;
            ActiveRecordDescriptor desc     = context["ardesc"] as ActiveRecordDescriptor;

            desc.PropertiesRelations.Clear();

            foreach (ListViewItem item in listView1.Items)
            {
                ActiveRecordPropertyRelationDescriptor property = item.Tag as ActiveRecordPropertyRelationDescriptor;

                if (!item.Checked)
                {
                    desc.PropertiesRelations.Remove(property);
                    buildCtx.IgnorePendent(property);
                }
                else
                {
                    desc.PropertiesRelations.Add(property);
                }
            }
        }
Exemplo n.º 8
0
        public EditRelationDialog(ActiveRecordDescriptor descriptor, Project project, ActiveRecordPropertyRelationDescriptor prop) : base(descriptor, project)
        {
            // This call is required by the Windows Form Designer.
            InitializeComponent();

            AssociationEnum assoc = AssociationEnum.Undefined;

            if (prop is ActiveRecordHasManyDescriptor)
            {
                hasManyButton.Checked = true;
                assoc = AssociationEnum.HasMany;
            }
            else if (prop is ActiveRecordBelongsToDescriptor)
            {
                belongsToButton.Checked = true;
                assoc = AssociationEnum.BelongsTo;
            }
            else if (prop is ActiveRecordHasAndBelongsToManyDescriptor)
            {
                hasAndBelongsToManyButton.Checked = true;
                assoc = AssociationEnum.HasAndBelongsToMany;
            }

            SelectedTarget = prop.TargetType;

            SwitchViewTo(assoc);
        }