Compartir a través de


Crear características personalizadas para los proyectos de base de datos

Puede extender los tipos de proyectos de base de datos existentes agregando sus propias características. Por ejemplo, puede crear una característica que haga algo cada vez que se carga o se guarda un proyecto de base de datos. También puede crear su propio proveedor de esquemas de base de datos y el sistema de proyectos auxiliar. Sin embargo, ese tipo de extensibilidad no se trata en el presente contenido.

Tareas comunes

Tareas comunes

Contenido adicional

Obtenga más información sobre los puntos de extensibilidad: puede leer sobre el diseño de extensibilidad de los proyectos de base de datos.

  • Objetivos de la extensibilidad de proyectos

  • Ensamblados del modelo de componentes

  • Puntos de extensibilidad

  • Ciclo de vida del proyecto de base de datos

  • Administración de errores

Cree una característica de proyecto de ejemplo: obtenga información sobre los pasos necesarios para crear una característica de proyecto personalizada que muestre un cuadro de diálogo al cargar un proyecto de base de datos. Si sigue estos tutoriales, hará lo siguiente:

  • Crear un paquete de Visual Studio.

  • Personalizar ese paquete para crear una característica de proyecto de base de datos.

  • Compilar, instalar y probar su nueva característica de proyecto.

Instale una característica de proyecto personalizada: después de crear y compilar una característica de proyecto, debe instalarlo para que Visual Studio lo reconozca.

Objetivos de la extensibilidad de proyectos

Los objetivos principales de las características de extensibilidad de proyectos de base de datos de Visual Studio 2010 son los siguientes:

  • Exponer los componentes principales por medio de interfaces
    Este enfoque mantiene la coherencia del sistema de proyectos con el modelo de esquema al utilizar interfaces en lugar de clases abstractas. Se espera que una clase concreta única implemente muchas interfaces.

  • El administrador de extensibilidad crea las características
    Las características son responsables de las partes principales del sistema, incluidos el Explorador de soluciones, la vista de esquema, la actualización del proyecto y las propiedades del proyecto.

  • Las características se pueden extender
    Las características pueden utilizar el administrador de extensibilidad, los archivos de XML, el Registro u otros enfoques para proporcionar esa extensibilidad.

  • Los servicios se exponen por medio de su propia interfaz
    DataPackage implementa IServiceProvider. En estos niveles, cualquier interferencia entre características se debería controlar por medio de los servicios. No debería exponer su característica como servicio. En su lugar, cree una nueva interfaz, una clase contenedora y, a continuación, exponga el contenedor como servicio.

  • Los eventos controlan el sistema de proyectos
    DataPackage y ProjectNode() ofrecen eventos que permiten que las características controlen el sistema de proyectos. Además, las características pueden proporcionar eventos a través de sus interfaces de servicio. En algunos casos, quizás decida utilizar un delegado. Para decidir qué característica controla la acción, considere la posibilidad de utilizar un enfoque de evento donde las características puedan interactuar, según la prioridad.

  • No confíe en el orden de los agentes de escucha
    Si el orden de los agentes de escucha de un evento es importante, considere la posibilidad de crear un evento Pre o Post o de agregar una propiedad de prioridad a la clase derivada de EventArg.

Ensamblados del modelo de componentes

Los siguientes ensamblados constituyen el sistema de proyectos de base de datos de Visual Studio.

  • Microsoft.VisualStudio.Data.Schema.Package.dll
    El sistema de proyectos base facilita el arranque de características y la generación de eventos. Eso incluye características válidas de base de datos, como los scripts.

  • Microsoft.VisualStudio.Data.Schema.PackageUI.dll
    El ensamblado satélite del paquete válido de base de datos.

  • Microsoft.VisualStudio.Data.Schema.Package.Sql.dll
    Las características específicas de SQL Server, los editores y las ventanas de herramientas de Visual Studio.

  • Microsoft.VisualStudio.Data.Schema.Package.SqlUI.dll
    El ensamblado satélite de las características específicas de SQL Server, los editores y las ventanas de herramientas.

Puntos de extensibilidad

Es posible extender los siguientes puntos del sistema de proyectos de base de datos:

Ciclo de vida del proyecto de base de datos

Cada archivo de proyecto de base de datos (.dbproj) contiene una propiedad denominada "DSP" que indica el DatabaseSchemaProvider concreto que controla este proyecto cuando se abre en Visual Studio. El sistema de proyectos crea un administrador de extensión mediante esta DSP y a partir de eso construye todos los colaboradores del sistema de proyectos y las características de proyecto. Cada característica recibe un evento Initialize para que se pueda inicializar y colocar en el sistema de proyectos al escuchar a los eventos.

Los siguientes eventos se producen durante la apertura o el cierre y el guardado del proyecto:

  • NewProjectCreated
    Este evento se produce cuando se crea un proyecto por primera vez. Puede controlar este evento para que muestre asistentes o cuadros de diálogo de instalación.

  • ProjectOpening
    El proyecto se está abriendo. Puede controlar este evento para que agregue cualquier servicio a IDatabaseProjectNode.

  • ProjectOpened
    Este evento se produce cuando se han agregado todos los servicios y el proyecto ha terminado de abrirse. Sin embargo, aún no habrá terminado de deserializar su estado anterior. TaskHost y DataSchemaModel serán NULL hasta que se envíe el evento ProjectLoaded.

  • ProjectLoaded
    El proyecto está totalmente cargado. TaskHost y DataSchemaModel están listas para su uso.

  • ProjectClosing
    El proyecto se está cerrando. Ésta es una buena oportunidad de conservar cualquier información de estado que esté fuera del archivo de proyecto.

  • ProjectClosed
    El proyecto está cerrado.

  • ProjectSaving
    El proyecto está realizando una operación de guardado. Puede aprovechar la oportunidad para asegurarse de que su característica está en un estado que permite el almacenamiento de su persistencia.

  • ProjectSaved
    El proyecto se ha guardado.

Administración de errores

Cada proyecto tiene un ErrorManager. Algunos errores se conservan en el archivo .dbmdl y otros no. Esto se controla por medio de la clase AddPersistedCategory. De forma predeterminada, se conservan estas categorías: ModelCategory, ValidationAtBuildCategory y ValidationOnIdleCategory. Si agrega otra categoría conservada, tendrá que controlar la recarga del proyecto y comprobar y administrar sus errores. Recuerde que aunque se cerró el proyecto, el usuario podría haber editado el archivo .dbproj para quitar un archivo que tuviera un error. Sería muy confuso para los usuarios notificar un error en el proyecto si tal archivo no existiera.

Los objetos de error de base de datos se agregan a ErrorManager en categorías concretas. La idea es que las características de proyecto pueden administrar la duración de sus errores por medio de la duración de su categoría. Si le preocupa que los nombres de categoría estén en conflicto con otras características, utilice un GUID como nombre. ErrorManager define varias categorías integradas que incluyen:

  • DefaultCategory
    Esta categoría está diseñada para usarla con errores cuyas duraciones sean iguales a la duración del proyecto. Por tanto, por ejemplo, los errores que se producen durante la carga del proyecto se agregan a esta categoría.

  • ModelCategory
    El administrador de esquema debe utilizar esta categoría cuando detecte errores, por ejemplo del analizador.

Escenarios relacionados

Crear tipos de refactorización de base de datos personalizados o destinos

Crear y registrar reglas adicionales para analizar el código de base de datos

Generar datos de pruebas especializados con un generador de datos personalizado

Definir condiciones personalizadas para pruebas unitarias de base de datos

Personalizar la compilación e implementación de bases de datos mediante colaboradores de compilación e implementación

Vea también

Conceptos

Extender las características de base de datos de Visual Studio