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

时间:2016-09-27 09:45:20

标签: enterprise-architect

我正在使用Object Model和C#创建新包。 我正在以递归方式创建带有子包的包,并且工作正常。但是,在脚本完成工作后,我的更改不会显示在EA中,除非我使用 ctrl shift 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();

1 个答案:

答案 0 :(得分:1)

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

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

回答最初的问题:以下是对最初模糊问题的回复。我把它留给别人参考。

呼叫

Repository.RefreshModelView(0)

从root用户重新加载整个视图。或者传递要刷新的包的PackageId。

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