2016-09-20 14 views
0

私たちは10のクラス要素を持つパッケージAを持っています。別のパッケージBを持っています。次に、パッケージAにある要素をパッケージAにアドインで移動します。これはどのようであっても、パッケージ-Bにパッケージ-Aからサブパッケージを移動するためのアドインあるパッケージから別のパッケージへの要素の移動

を通じてEAに達成することができ、同じことがPackageB IDを持つすべてのクラス要素のためのPackageIDプロパティを設定し

+1

[EAアドインを含むパッケージ間に存在する要素をc#で移動する方法](http://stackoverflow.com/questions/28819597/how-to-move-exisiting-elements-between-packages-with -an-ea-addin-in-c) – Uffe

答えて

1

の作品です。ここで

サンプルコードsomethinglike

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

一度に要素のセットを移動できますか? –

+0

@ManuVいいえあなたはEAのAPIを移動できません – Arshad

+0

同じようにパッケージを移動することもできます –

0

はSQLを介して、任意のスクリプトなしで一度にそれを行う方法です。 EAのSQL Scratchpadでこれを行います。

enter image description here

コピーをクリップボード内のターゲット・パッケージのGUID、{61068DDF-335B-4b29-89F8-C54A7000EF6Fを}言う)

Copy GUID

そのパッケージ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}' 
) 

このトリックを行う必要があります。

最初にモデルをバックアップしてください。

アドインの場合は、2つのGUIDとRepository.Execute(theSQLString)を取得するだけです。

Repository.Executeはドキュメントにはありませんが、動作します。

関連する問題