EMF(Meta)模型中的ID /密钥定义

时间:2011-07-15 10:33:14

标签: eclipse-emf eclipse-emf-ecore

我遇到了关于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'

我希望我的问题能够清楚地描述出来。有谁知道我做错了什么?谢谢!

2 个答案:

答案 0 :(得分:1)

设置为“ID”的EAttribute应该是唯一的资源范围。如果要使用myReference [name =“SomeName”]构造引用元素,则应使用eKeys,然后eKeyed属性应在引用中具有唯一值。

我认为你将“aID”和“bID”定义为“ID”,而这不是你真正想要的。

答案 1 :(得分:0)

这可以使用OO层次来解决。您只需要从包含id属性的公共Abstract类扩展A和B,并在emf属性中将其设置为ID。

问候