双击EA Element更新

时间:2017-07-04 07:50:34

标签: enterprise-architect

我们打开自定义表单代替EA元素的属性视图双击图表或项目浏览器中的元素,即使用EA_OnContextItemDoubleClicked事件(我们使用show-dialog打开自定义表单并返回false,以便属性视图不应该双击打开)。在自定义表单中,我们尝试使用API​​ element.Name更新EA元素并更新它。但问题是当我们更新它在项目浏览器中反映的元素名称时,如果我们打开更新的EA元素的EA属性视图并单击确定按钮,则更新将恢复为旧值(旧名称)。 请找到以下代码。

public virtual bool EA_OnContextItemDoubleClicked(EA.Repository Repository,string GUID, EA.ObjectType ot)
        {
                  EA.Element ele=  Repository.GetElementByGuid(GUID);
                  ele.Name = "Test";
                  ele.Update();

 repository.AdviseElementChange(ele.ElementID);


            }

2 个答案:

答案 0 :(得分:1)

你正在做的是玩无担保的武器。 从不使用Execute,除非它不可避免(如果API缺乏功能,如果性能是必须的话)。因此,在您的代码中,Execute没有理由。在"test"之前将名称设置为Update,然后删除Execute语句。

除此之外:t_object.ea_guid=GUID永远不会做任何事情,因为你没有任何结果集。或者它可能会引发异常,因为GUID不是字段。我想你的意思是

Repository.Execute("Update t_object set t_object.Name='test' where t_object.ea_guid='" + GUID + "'");

但话又说回来:见上文!

答案 1 :(得分:0)

使用此API repository.AdviseElementChange(element.ElementID)解决了上述问题。