代码之家  ›  专栏  ›  技术社区  ›  Paulo Santos

如何扩展ADO.NET实体设计器?

  •  1
  • Paulo Santos  · 技术社区  · 15 年前

    是否有人知道如何扩展,即向Visual Studio中的实体设计器添加功能?

    例如,我想右键单击设计器上实体的属性,并在上下文菜单上有一个新选项,允许我做任何我想做的事情。

    1 回复  |  直到 15 年前
        1
  •  2
  •   sth Wojciech Parzych    15 年前

    VS2008SP1中的实体设计器没有很多可扩展性挂钩。您可以利用Visual Studio扩展性(VSIP,现在称为VSX):

    1. 加入 your own context menu
    2. 使用 IVsMonitorSelection to get the current selection ,从中可以获取ISelectionContainer。
    3. 如果用户选择了图面,则可以将ISelectionContainer强制转换为 DiagramDocView .这是“DSL”的一部分,这是实体设计器用于其设计器图面的框架。
    4. 从这里,您可以在DiagramDocView中执行许多操作。diagramdocview.currentdiagram将为您提供 Diagram 对象。可以调用diagram.nestedChildShapes以获取图表中的所有形状。要更改图表,必须创建DSL事务并对事务中的形状执行编辑。这只是实体设计器之上的另一个级别,所有内容都将得到正确处理:

      using (Transaction tx = store.TransactionManager.BeginTransaction(txText))
      {
         // do something, such as creating an EntityTypeShape;
         tx.Commit();
      }
      

    VS2010中的实体设计器将有更多的扩展性挂钩,允许您通过属性窗口或向导影响模型。新的“模型优先”功能中的新扩展性工作基本上允许您以可组合的方式从Visual Studio中的模型生成任何东西。