项目中有一个一对一的关系,不是原来常用的一对多的关系,只好先测试一下,环境BDS2006,首选加入两个类,AAA 和BBB,并设置其为一对一的关系,在一对一关系中,在关系中BBB这一端的聚合里设置为COMPOSITE,那么删除AAA时,其拥有的BBB也被删除.
测试在一个按钮中进行,测试利用下面代码:
var a:aaa; b:bbb;begin a:=aaa.Create(fecospace); a.name:='a01';
b:=BBB.Create(FECOSPACE); B.name:='B01'; A.bbb:=B;
b:=BBB.Create(FECOSPACE); B.name:='B02'; A.bbb:=B;
FECOSPACE.UpdateDatabase;
最后生成的库中,查知,两个BBB均已生成,但只有B02这个名字为A01这个名字的相对应关系,B01在库中存在,但其与A01并无关系生成,证实了一对一关系,不会是一对多.
在另一个按钮中测试是否能成功删除,以下代码测试成功
(CMAAA.Element.AsObject AS AAA).AsIObject.Delete;
FECOSPACE.UpdateDatabase;
经上面代码后,A01与B02两个名字均被删除,一方面证实了COMPOSITE的有效性,另一方面证实了B01与A01确实不存在对应关系. |