新创建的包仅在手动刷新后显示

Newly created packages only show up after manual refresh

我正在使用对象模型和 C# 创建新包。 我正在递归地创建带有子包的包,并且工作正常。但是,脚本完成后,我的更改不会显示在 EA 中,除非我使用 ctrlshift[=29= 手动刷新项目]F11,之后我创建的包会按预期显示。

我正在更新新创建的包 newPackage.Update();,以及刷新父包 parentPackage.Packages.Refresh(); 的包。

递归创建所有包后,我另外调用 Model.Update()Repository.Models.Refresh();Model.Packages.Refresh(); 以及 Repository.Exit().

EA 似乎重绘了视图,但没有显示新创建的包。

我是否错过了最后更新视图的任何调用?

我正在使用此代码:

eaApplication = new EA.App(); // Create interface to EA
eaRepository = eaApplication.Repository;
eaRepository.EnableUIUpdates = true;
eaRepository.OpenFile(pathToEAPfile) 
EA.Package eaModel = eaRepository.Models.GetAt(0);
EA.Package testModelPackage = (getting it via for loop);
EA.Package newPack = testModelPackage.Packages.AddNew("foopackage", "System.__ComObject");
newPack.Update();
testModelPackage.Packages.Refresh();

eaRepository.RefreshModelView(0);
eaRepository.Exit();

我想你是从外部应用程序调用它的。任何 EA 客户端都不会收到基础数据库更新的通知。仅当用户明确阅读适当的部分时。

您需要 运行 EA 中的上述代码作为加载项或手动刷新。

对初始问题的回答:以下是对初始模糊问题的回答。我留下来供其他人参考。


致电

Repository.RefreshModelView(0)

从根目录重新加载整个视图。或者传入你要刷新的包的PackageId。

N.B。您所有的额外电话都是多余的。仅对已更改的对象调用 Update()Refresh() 仅当您之后遍历更改的集合(添加或删除对象之后)时才需要调用。