Определения ID/Key в моделях EMF (Meta)

Я застрял с очень простой проблемой, касающейся ЭДС, вот что у меня есть.

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. Однако, когда я это делаю, я получаю сообщение:

The ID '1' of 'A' collides with that of 'B'

Надеюсь, моя проблема описана понятно. Кто-нибудь знает, что я делаю неправильно? Спасибо!


person user846242    schedule 15.07.2011    source источник


Ответы (2)


EAttribute, установленный как «ID», должен быть уникальным для всего ресурса. Если вы хотите ссылаться на элементы с помощью конструкции myReference[name="SomeName"], вам следует использовать eKeys, тогда атрибут eKeyed должен иметь уникальное значение в пределах ссылки.

У меня сложилось впечатление, что вы определили «aID» и «bID» как «ID», тогда как это не то, что вам действительно нужно здесь.

person Cédric Brun    schedule 03.06.2012

Это можно решить с помощью объектно-ориентированной иерархии. Вам просто нужно расширить A и B из общего абстрактного класса, который содержит атрибут id и установлен как ID в свойствах emf.

С уважением

person Cristiano    schedule 04.11.2011