Ertan,You can do this but you will need to use a BBS as Peter was pointing out. This is exactly what we do for our reports. We create a class that inherits from a BBS and then expose the BO (this would only be a single instance). Then that BO exposes another BBS that wraps another BO. This way you can get exactly what you want.
Public Class OrdersBBS
Inherits MicroFour.StrataFrame.Business.BusinessBindingSource
#Region " Constructors "
''' <summary>
''' Default Constructor
''' </summary>
''' <remarks></remarks>
Public Sub New()
Me.BusinessObject = New OrdersBO()
End Sub
#End Region
#Region " Public Methods "
''' <summary>
''' Populate the data source
''' </summary>
''' <remarks></remarks>
Public Sub Fill(Byval customerPK As Long)
If Not Me.DesignMode Then
CType(Me.BusinessObject, OrdersBO).FillByParentPrimarykey(customerPk)
End If
End Sub
#End Region
End Class
Public Class CustomersBBS
Inherits MicroFour.StrataFrame.Business.BusinessBindingSource
#Region " Constructors "
''' <summary>
''' Default Constructor
''' </summary>
''' <remarks></remarks>
Public Sub New()
Me.BusinessObject = New CustomersBO()
End Sub
#End Region
#Region " Private Fields "
Private _Orders As New OrdersBBS()
#End Region
#Region " Public Methods "
''' <summary>
''' Populate the data source
''' </summary>
''' <remarks></remarks>
Public Sub Fill()
If Not Me.DesignMode Then
CType(Me.BusinessObject, CustomersBO).FillTop100()
'-- You could load the Orders BO in the OrdersBBS here
End If
End Sub
#End Region
#Region " Public Properties "
Public Readonly Property Orders As OrdersBBS
Get
'-- You may want to apply a filter here to filter our the orders
' for the current customer here
'_Orders.Filter = "or_cs_pk = " & _Customers.pk.ToString()
Return _Orders
End Get
End Property
#End Region
End Class