我有3节课:
一个
B包含急切的ForeignCollection< A>用getEmptyForeignCollection()构造的
C包含急切的ForeignCollection< A>用getEmptyForeignCollection()
构造的我通过调用create()创建B和C的实例,并将行插入到各自的数据库表中。到目前为止,非常好。
我创建了A的实例,然后将其添加到B的ForeignCollection中。这样做会导致BaseForeignCollection在数据库表中插入表示As的新行。这按预期工作(虽然我宁愿手动执行INSERT。)
但是当我向C的ForeignCollection添加相同的A实例时,这会导致BaseForeignCollection将另一行INSERT到表示As的数据库表中。这是不可取的,因为A已经存在。
我做错了什么,或者这是一个错误?有没有办法做我需要做的事情?
提前感谢您的帮助。
答案 0 :(得分:1)
抱歉延迟回复。
我创建了A的实例,然后将其添加到B的ForeignCollection中。这样做会导致BaseForeignCollection在数据库表中插入表示As的新行。这按预期工作(虽然我宁愿手动执行INSERT。)
右。您不必通过添加到B
的{{1}}字段来执行此操作。您只需通过ForeignCollection
添加A
课程即可。然后,当您查询aDao.create(a)
时,外部集合将自动包含它。
但是当我向C的ForeignCollection添加相同的A实例时,这会导致BaseForeignCollection将另一行INSERT到表示As的数据库表中。这是不可取的,因为A已经存在。
B
是ForeignCollection
表的视图。一旦您以任何方式插入A
,它将自动位于关联的A
和B
外国收集字段中。如果您正在使用预先提取,那么如果您已经拥有C
的实例并且创建了引用B
的{{1}},则需要A
来更新了foreign-collection字段。