ÄÄhh ich glaube so ist das nicht.
Ich glaube das ist weniger ein DB-Thema als ein grunsätzlich sprachlich/objektorientiertes (deswegen hab ich das auch erstmal ins VB-Forum gepostet).
Wie speichert man eine Klasse in der Klasse und ruft sie wieder ab????
Dh. die Klasse enthält sowas wie Public mySubProzesses As System.Collections.Generic.List(Of Prozess) Also was bisher geht::
Public Class Prozess
#Region "Public constructors"
Public Sub New()
End Sub
Public Sub New(ByVal ProzessName As String)
Me.m_ProzessName = ProzessName
End Sub
'constructor for data loading.
Public Sub New(ByVal ProzessNI As String, ByVal ProzessName As String, _
ByVal ProzessTask As String, ByVal ProzessFlow As String)
Me.m_ProzessNI = ProzessNI
Me.m_ProzessName = ProzessName
Me.m_ProzessTask = ProzessTask
Me.m_ProzessFlow = ProzessFlow
End Sub
#End Region
#Region "Private Members"
Private m_SubProzess As Prozess
Private m_SubProzesse As IList
Private m_ProzessTime As ProzessTime
Private m_ProzessNI As String
Private m_ProzessName As String
Private m_ProzessTask As String
Private m_ProzessFlow As String
Private m_CreatedBy As String
#End Region
#Region "Public Properties"
Public Property SubProzess() As Prozess
Get
Return m_SubProzess
End Get
Set(ByVal value As Prozess)
m_SubProzess = value
End Set
End Property
Public Property ProzessTime() As ProzessTime
Get
Return m_ProzessTime
End Get
Set(ByVal value As ProzessTime)
m_ProzessTime = value
End Set
End Property
Public Property ProzessNI() As String
Get
Return m_ProzessNI
End Get
Set(ByVal Value As String)
m_ProzessNI = Value
End Set
End Property
Public Property ProzessName() As String
Get
Return m_ProzessName
End Get
Set(ByVal Value As String)
m_ProzessName = Value
End Set
End Property
Public Property ProzessTask() As String
Get
Return m_ProzessTask
End Get
Set(ByVal Value As String)
m_ProzessTask = Value
End Set
End Property
Public Property ProzessFlow() As String
Get
Return m_ProzessFlow
End Get
Set(ByVal Value As String)
m_ProzessFlow = Value
End Set
End Property
Public Property CreatedBy() As String
Get
Return m_CreatedBy
End Get
Set(ByVal Value As String)
m_CreatedBy = Value
End Set
End Property
....
#End Region
....
End Class Damit kann man dann folgendes tun:
objProzess.ProzessName = Me.txt_ProzessName.Text
objProzess.ProzessFlow = Me.txt_ProzessFlow.Text
objProzess.ProzessTask = Me.txt_ProzessTask.Text
objProzess.CreatedDate = Today
Dim db As com.db4o.ObjectContainer = com.db4o.Db4oFactory.OpenFile( _
Application.StartupPath & "\Data\Test.yap")
Try
' do it with db4o
db.Set(objProzess)
.... Toll, das Object (Klasse/Datensatz) ist gespeichert.
Jetzt möchte ich den einem Prozess einen SubProzess zuordnen. UND das kapier ich halt im Moment nicht.
Weil dieser Teil der Klasse so nicht funktioniert.
Public Function IsComponentOf(ByVal assembly As ProzessAssembly) As Boolean
Return assembly.HasChildComponent(Me)
End Function
Public Function CreateSubProzess(ByVal objectContainer As _
ObjectContainer) As Prozess
Dim objProzess As New Prozess
objProzess.m_SubProzesse = objectContainer.Ext().Collections( _
).NewLinkedList()
Return objProzess
End Function sowas dann wie:
Dim objSubProzess As DBObjects.Prozess = New DBObjects.Prozess
objSubProzess.ProzessNI = System.Guid.NewGuid.ToString()
objSubProzess.ProzessName = Me.txt_ProzessName.Text & " " & _
objSubProzess.ProzessNI
objProzess.CreateSubProzess(objSubProzess) Wobei eigentlich die guid (ursprünglich mal der unique Identifier) nicht nötig ist, da db4o jedem serialisiertem Objekt eine interne ID zuweist.
Und db4o kann auch cascadierend serialisieren.
Sector Twelve, or to Infinity and Beyond, whichever comes first.! |