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

Linq 如何扩展ADO.NET实体设计器?,linq,linq-to-entities,ado.net-entity-data-model,Linq,Linq To Entities,Ado.net Entity Data Model,是否有人知道如何扩展,即在Visual Studio中向实体设计器添加函数 例如,我想右键单击设计器中某个实体的属性,并在上下文菜单上有一个新选项,允许我做任何我想做的事情。VS 2008 SP1中的实体设计器没有很多扩展性挂钩。您可以做的是利用Visual Studio扩展性(VSIP,现在称为VSX): 附加 使用,您可以从中获取ISelectionContainer 如果用户选择了图面,则可以将ISelectionContainer强制转换为。这是“DSL”的一部分,DSL是实体设计器用于

是否有人知道如何扩展,即在Visual Studio中向实体设计器添加函数


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

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

  • 附加
  • 使用,您可以从中获取ISelectionContainer
  • 如果用户选择了图面,则可以将ISelectionContainer强制转换为。这是“DSL”的一部分,DSL是实体设计器用于其设计器表面的框架
  • 从这里,您可以在DiagramDocView中执行许多操作。DiagramDocView.CurrentDiagram将为您提供对象。您可以调用Diagram.NestedChildShapes来获取图表中的所有形状。要更改图表,必须创建DSL事务并对事务中的形状进行编辑。这只是实体设计器之上的另一个级别,一切都将得到正确处理:

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

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