我正在使用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();
答案 0 :(得分:1)
我想你是从外部应用程序调用它的。任何EA客户端都不会收到基础数据库更新的通知。仅当用户明确读取相应的部件时。
您需要在EA中运行上述代码作为加载项或手动刷新。
回答最初的问题:以下是对最初模糊问题的回复。我把它留给别人参考。
呼叫
Repository.RefreshModelView(0)
从root用户重新加载整个视图。或者传递要刷新的包的PackageId。
N.B。所有额外的电话都是多余的。仅对已更改的对象调用Update()
。只有在事后遍历更改的集合(添加或删除对象之后)才需要Refresh()
调用。