Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 聚合关系和从数据库存储(vb)实例化对象_Database_Vb.net_Object_Persistence_Aggregation - Fatal编程技术网

Database 聚合关系和从数据库存储(vb)实例化对象

Database 聚合关系和从数据库存储(vb)实例化对象,database,vb.net,object,persistence,aggregation,Database,Vb.net,Object,Persistence,Aggregation,我有一个小应用程序,允许用户创建帐户,然后相互奖励“积分”。UserAccount是一个对象,Point也是,它们之间存在聚合关系:每个UserAccount都有一个成员变量(PointHistory),它是点的集合 Point对象只包含UserAccount对象发送/接收点的属性 当我简单地序列化类以持久化对象模型时,这很好。但是,我现在正在实现一个数据库来持久化对象数据,并且在任何给定的时间只有一个/一些对象将被加载到内存中。要加载这些对象,我有一个构造函数方法,它从数据库中的一行创建一个新

我有一个小应用程序,允许用户创建帐户,然后相互奖励“积分”。UserAccount是一个对象,Point也是,它们之间存在聚合关系:每个UserAccount都有一个成员变量(PointHistory),它是点的集合

Point对象只包含UserAccount对象发送/接收点的属性

当我简单地序列化类以持久化对象模型时,这很好。但是,我现在正在实现一个数据库来持久化对象数据,并且在任何给定的时间只有一个/一些对象将被加载到内存中。要加载这些对象,我有一个构造函数方法,它从数据库中的一行创建一个新的UserAccount,还有一个类似的构造函数从数据库行创建一个点。这就是问题开始的地方——当第二个构造函数必须引用第一个构造函数尚未构造的内容时,一个对象的构造函数如何调用另一个对象的构造函数?要完成构造,必须已构造对象


简单的解决方案是将点对象集合(PointHistory)替换为从数据库查询中提取的字符串集合。就我的目的而言,这就足够了。但是,我想知道是否有其他方法可以做到这一点,而不放弃点对象/对象模型,以及这种聚合/持久性问题是否常见?

如果我理解正确,UserAccount构造函数需要构造属于此UserAccount的点,这些要点需要一种方法来引用当前正在构建的UserAccount

如果是这种情况,您可以将Me传递到点构造函数中,这实际上将传递正在构造的用户帐户。即使构造尚未完成,它也将传递UserAccount对象

Class UserAccount

   Private _pointHistory As New System.Collections.Generic.List(Of MyProject.Point)

    Public Sub New()
       ...
       ...

       ' Instantiate a new point, and pass this UserAccount object into it 
       ' so that it can grab a reference
       Dim newPoint as New MyProject.Point(Me) 

       'Add the Point to this UserAccount's collection
       _pointHistory.Add(newPoint)

    End Sub

End Class


Class Point

    Private _parentAccount as MyProject.UserAccount

    Public Sub New(parentAccount as MyProject.UserAccount)

        'Store the reference to the User Account
        _parentAccount = parentAccount

    End Sub

End Class

您好,如果您觉得我的答案有用,请将其标记为已接受。对不起,我当时没有意识到这是打勾的原因;当我按下向上箭头时,它不起作用,因为我的帐户没有注册