0

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

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

4

2 回答 2

1

设置为“ID”的 EAttribute 在资源范围内应该是唯一的。如果您想使用 myReference[name="SomeName"] 构造来引用元素,那么您应该使用 eKeys,那么 eKeyed 属性应该在引用中具有唯一值。

我的印象是您将“aID”和“bID”定义为“ID”,而这并不是您真正想要的。

于 2012-06-03T07:11:47.987 回答
0

这可以使用 OO 层次结构来解决。您只需要从包含 id 属性并在 emf 属性中设置为 ID 的通用抽象类扩展 A 和 B。

问候

于 2011-11-04T14:38:18.897 回答