将元素从一个包移动到另一个包

Moving Elements from one packe to another package

我们有 Package-A 其中有 10 个 class elements.We 还有另一个 Package-B 。现在我们想通过 [= 将 Package-A 中存在的元素移动到 Package-B 15=] 这可以通过插件在 EA 中实现吗

即使将子包从包 A 移动到包 B 也是一样的

为具有 PackageB ID 的所有 class 元素设置 PackageID 属性。

类似示例代码

foreach(EA.Element classElement in PackageA.elements)
{
    classElement.PackageID = packageb.PackageID : 
    classElement.Update();
}  

这是一种无需任何脚本即可通过 SQL 立即完成的方法。 在 EA 的 SQL Scratchpad 中执行此操作。

复制剪贴板中目标包的GUID,比如{61068DDF-335B-4b29-89F8-C54A7000EF6F})

其包ID如下:

select Package_ID from t_package where ea_guid='{61068DDF-335B-4b29-89F8-C54A7000EF6F}'

在剪贴板中复制源包的 GUID,比如 {F3B52DA0-D9E9-4606-BCA0-5D211B73FBE6}。

其包ID如下:

select Package_ID from t_package where ea_guid='{F3B52DA0-D9E9-4606-BCA0-5D211B73FBE6}'

所以,源码包中的元素是:

select * from t_object where Package_ID=(select Package_ID from t_package where ea_guid='{F3B52DA0-D9E9-4606-BCA0-5D211B73FBE6}')

所以,让我们把它带到目标。

update t_object 
set Package_ID=(select Package_ID from t_package where ea_guid='{61068DDF-335B-4b29-89F8-C54A7000EF6F}'
where Package_ID=(
select Package_ID from t_package where ea_guid='{F3B52DA0-D9E9-4606-BCA0-5D211B73FBE6}'
)

应该可以解决问题。

先备份你的模型。

对于加载项,只需获取两个 GUID 和 Repository.Execute(theSQLString).

Repository.Execute 不在文档中,但有效。