保存模型时的 EMF 悬挂参考

EMF dangling reference when I save my model

我已经使用 EMF 创建了一个模型,我希望能够使用编辑器保存我的模型并稍后打开它。 例如,假设我的模型有 3 个 classes:A、B、C 和 R。R 是根父级。 class C 有一个对 A 的引用和一个对 B 的引用。 当我编辑我的模型时,一切正常。但是如果我想将我的文件保存到另一个位置,我可以打开它但我不能再保存它而不会收到一条错误消息告诉我我在 C 对象中的引用是悬空引用。 保存时的 xml 文件如下所示,供我参考:

<refToA ="//@CompElement.0/@composit/@parts.0">

我试图在我的 ecore 文件中将 containable 设置为 true。悬挂引用消失,但在保存后如果我触摸 B 的属性,则更改不适用于引用,因为现在我有两个 B 对象。

如何正确制作参考并保存?

my model has 3 classes: A, B, C and R

你的意思是你的元模型有 3 个 EClasses/metaclasses A、B、C 和 R。

The R is the root parent

您模型的根元素是 R 类型。 A、B、C是怎么包含的?

When I edit my model everything works fine. But if I want to save my file to another location, I can open it but I can't save it anymore

我怀疑仅仅将您的资源保存到某个位置或另一个位置会对您的模型产生重大影响。您如何编辑它并将其保存到其他位置?

我找到了解决方案。 在我的 XMI 文件模型中是这样保存的:

<R>
  <C refA... refB...>
  <\C>
  <A><\A>
  <B><\B>
<\R>

像这样保存 A 和 B 对象后需要放置引用:

<R>
  <A><\A>
  <B><\B>
  <C refA... refB...>
  <\C>
<\R>