StrataFrame Forum
Home      Members   Calendar   Who's On
Welcome Guest ( Login | Register )
      



Automatically creating a child BOExpand / Collapse
Author
Message
Posted 02/21/2008 12:12:09 AM
StrataFrame Beginner

StrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame Beginner

Group: StrataFrame Users
Last Login: 02/21/2008 11:30:53 AM
Posts: 3, Visits: 3
I need to add a Child BO whenever I add a new Parent BO.  I have the proper parent/parent relationship setup, and can add the child BO manually within a form when testing.  (Parent = LocationBO, Child = PremisesBO)

The problem is the best place to do this, as in what Parent BO event or some other place?  I tried the AfterAddNew event, but the Parent PK is equal to a -1 which I suspect is because the Parent has yet to be saved, so I can't assign the proper PK to the Child BO FK  If I put the following code in the AfterSave, it works fine:

   Private Sub LocationsBO_AfterSave(ByVal e As MicroFour.StrataFrame.Data.AfterSaveUndoEventArgs) Handles Me.AfterSave

        Dim pBO As New PremisesBO
        pBO.Add()
        pBO.Name = "Premise"
        pBO.LocationsID = Me.LocationsID
        Try
            pBO.Save()
        Catch ex As Exception

        End Try
End Sub

The problem is that this event is also triggered when I delete my BO on a form:

    Private Sub btnLocationBO1Delete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLocationBO1Delete.Click
        LocationBO1.DeleteCurrentRow()
        LocationBO1.Save()
    End Sub

So, what is the obvious approach I am overlooking?  I only need to create my ChildBO whenever I create my Parent.  The database handles the Child delete just fine with a Parent delete via a cascade.

Thanks in advance!

Post #14472
Posted 02/21/2008 9:13:53 AM


StrataFrame Developer

StrataFrame Developer

Group: StrataFrame Developers
Last Login: Today @ 4:58:13 AM
Posts: 4,379, Visits: 4,421
I can't assign the proper PK to the Child BO FK  If I put the following code in the AfterSave, it works fine:

I think that you are making things more complicated than they need to be.  First, the documentation and samples show you about the negative numbers and how this works...and you will want to search out here on the forum as well as there are many other posts regarding parent and children relationships and how StrataFrame will manage this value for you.

StrataFrame will manage this foreign key value for you.  Within the designer of the child BO, you will setup the ParentRelationship property which defines how the child and parent relate to one another.  When you drop an instance (or create an instance in code) you will then set the ParentBusinessObject property of the child to the instance of the parent.  At this point you can forget about having to worry with the parent PK and child PK.  When a new parent is created, as you noticed, it will use negative numbers.  So when you create a new child record, it will automatically update the childs foreign key with that negative number.  But here is where SF really shines, even if you manually try to save the child BO programmatically first, it recognizes that the parent is dirty and ensures that its parent saves before itself.  Once the parent saves (and this can nest however deep you need to) it will automatically propogate the new PK of parent to the foreign keys of children....thus replacing the negative value with the actual PK.  So you should not have to worry with this.

Post #14481
Posted 02/21/2008 11:34:04 AM
StrataFrame Beginner

StrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame BeginnerStrataFrame Beginner

Group: StrataFrame Users
Last Login: 02/21/2008 11:30:53 AM
Posts: 3, Visits: 3
Ah yes, the 'ParentBusinessObject' bit me.  Yep, I was making it more difficult for myself.  Thanks for getting me squared away!

Fred

Post #14497
Posted 02/21/2008 1:13:02 PM


StrataFrame Developer

StrataFrame Developer

Group: StrataFrame Developers
Last Login: Today @ 4:58:13 AM
Posts: 4,379, Visits: 4,421
No problem
Post #14499
« Prev Topic | Next Topic »


Reading This TopicExpand / Collapse
Active Users: 0 (0 guests, 0 members, 0 anonymous members)
No members currently viewing this topic.
Forum Moderators: Ben Chase, Trent L. Taylor, Steve L. Taylor

PermissionsExpand / Collapse

All times are GMT -6:00, Time now is 4:05pm

Powered by InstantForum.NET v4.1.4 © 2008
Execution: 0.094. 11 queries. Compression Enabled.
Site Map - Home - My Account - Forum - About Us - Contact Us - Try It - Buy It

Microsoft, Visual Studio, and the Visual Studio logo are trademarks or registered trademarks of Microsoft Corporation in the United States and/or other countries.