我遇到了关于EMF的一个非常基本的问题,这就是我所拥有的。
EClass A:
aID : EInteger (Key: true)
EClass B:
bID : EInteger (Key: true)
EClass C:
Reference refA: to elements of A, containment: true, EKeys: aID, 0 .. n
Reference refB: to elements of B, containment: true, EKeys: bID, 0 .. n
现在问题就在于此。在我的a和b列表中,我想要从0到n的ID。但是,当我这样做时,我收到消息:
The ID '1' of 'A' collides with that of 'B'
我希望我的问题能够清楚地描述出来。有谁知道我做错了什么?谢谢!
答案 0 :(得分:1)
设置为“ID”的EAttribute应该是唯一的资源范围。如果要使用myReference [name =“SomeName”]构造引用元素,则应使用eKeys,然后eKeyed属性应在引用中具有唯一值。
我认为你将“aID”和“bID”定义为“ID”,而这不是你真正想要的。
答案 1 :(得分:0)
这可以使用OO层次来解决。您只需要从包含id属性的公共Abstract类扩展A和B,并在emf属性中将其设置为ID。
问候