Как расширить конструктор сущностей ADO.NET? - PullRequest
1 голос
/ 26 марта 2009

Кто-нибудь знает, как расширить, т.е. добавить функциональные возможности в Entity Designer в Visual Studio?

Например, я хочу щелкнуть правой кнопкой мыши свойство объекта в конструкторе и получить новую опцию в контекстном меню, которая позволяет мне делать любые вещи, которые я хочу.

1 Ответ

2 голосов
/ 30 сентября 2009

Entity Designer в VS 2008 SP1 не имеет много хуков расширяемости. Что вы можете сделать, это использовать расширяемость Visual Studio (VSIP, теперь известный как VSX):

  1. Добавить свое собственное контекстное меню
  2. Используйте IVsMonitorSelection для получения текущего выбора , из которого вы можете получить ISelectionContainer.
  3. Если пользователь выбрал поверхность диаграммы, вы можете привести ISelectionContainer к виду DiagramDocView . Это часть DSL, которая является структурой, которую Entity Designer использует для своей поверхности конструктора.
  4. Отсюда вы можете многое сделать в DiagramDocView. DiagramDocView.CurrentDiagram предоставит вам объект Diagram . Вы можете вызвать Diagram.NestedChildShapes, чтобы получить все фигуры на диаграмме. Чтобы внести изменения в диаграмму, вам нужно будет создать транзакцию DSL и внести изменения в фигуры в транзакции. Это просто еще один уровень выше Entity Designer, и все будет обработано правильно:

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

Entity Designer в VS 2010 будет иметь гораздо больше хуков расширяемости, чтобы вы могли влиять на модель через окно свойств или с помощью мастера. Новая работа по расширению в новой функции «Model First» позволит вам сгенерировать что-либо из модели в Visual Studio любым способом.

...