2010-04-30 5 views
20

Estoy usando EF4 con Visual Studio 2010. Tengo una base de datos SQL ya creada y todas mis columnas están documentadas con la propiedad Descripción en SQL Management Studio. Cuando creo el edmx en Visual Studio, ¿cómo puedo hacer que lea esas descripciones y usarlas para agregar comentarios a mis clases generadas? Sé que puedo usar el Resumen y LongDescription en las propiedades de edmx pero estoy buscando una forma de hacerlo sin tener que copiar y pegar cada descripción.¿Cómo puedo hacer que el diseñador del modelo de datos de Entity use las descripciones de mis columnas de la base de datos?

Gracias!

+1

Eche un vistazo a [http://eftsqldocgenerator.codeplex.com/](http://eftsqldocgenerator.codeplex.com/). Parece que hace el trabajo. Aunque no lo he probado. – Kamyar

+1

Gracias @kamyar. Lo bifurqué y lo arreglé para EF5, funciona muy bien. Obtenga la copia actualizada aquí: https://github.com/timabell/ef-document-generator –

+1

Ahora con el enlace de descarga https://github.com/timabell/ef-document-generator/releases/latest para evitar que compile su propio. –

Respuesta

1

No sé si el diseñador en sí tiene algún punto de extensibilidad. Sin embargo, una vez que los campos Resumen y Descripción larga se llenen en su archivo edmx, esos valores permanecerán allí, incluso si realiza otros cambios o actualiza su modelo desde la base de datos. A menos que elimine una tabla y la vuelva a agregar, esos valores permanecerán llenos.

Así que puede copiar y pegar todos en uno a la vez (¿cuántas tablas hay en su modelo? Esto va más rápido de lo que cree), o escribir un programa para extraer la información de su base de datos (usando SQL SMO o algo así), y haga que ese programa edite su archivo edmx, rellenando los campos Resumen y Descripción larga (haga una copia de seguridad de su edmx cada vez que pruebe su programa; no quiere arruinar su archivo edmx y debe volver a empezar de nuevo))

Si tiene modelos grandes, y está fabricando muchos, escribir un programa para hacerlo automáticamente vale la pena. Si solo tiene algunos modelos, con no demasiadas tablas, copie y pegue.

Es posible que desee pensar en enviar comentarios al equipo de Entity Framework here. Parece que el diseñador debería recoger automáticamente en el campo de descripción de SQL Server. Haría una buena solicitud de funciones.

5

Hay una solicitud de función para esto. Siéntase libre de agregar sus votos para ayudar a que esté disponible en el futuro: Retrieve the SQL Descriptions in Entity-Framework feature request

Huagati tiene algunas herramientas excelentes para trabajar con EF y L2S. Una de las características es la actualización de la documentación EF basado en la base de datos SQL: Huagati website

Desde el sitio web: documentación de actualización de ADO.NET Entity Data Model recupera la base de datos de tablas y columnas descripciones de texto libre, y las definiciones de índice la base de datos y actualiza los campos de documentación xml en el diseñador de EDMX con las descripciones.

Parece que buscan estos campos en la base de datos y luego actualizan directamente el modelo XML. Probablemente alguien podría crear un complemento VS que haría lo mismo sin el precio si esta es la única característica que deseaba. Agregaré esto a mi lista de proyectos "futuros" (¡aunque nunca encuentro tiempo para estos!).

Espero que ayude!

+0

Huagati DBML/EDMX Tools ahora es gratis – Valentin

+0

El enlace de solicitud de función está detrás de un muro de inicio de sesión, y una vez que haya iniciado sesión en 404s. Supongo que ahora están trabajando en EF7, que es una reescritura completa, esta solicitud de función está muerta. Microsoft tiene una buena manera de cuidar a las personas que tienen que usar su gran idea anterior. : -/ –

+0

Las herramientas de Huagati no parecen funcionar en VS 2015 y el desarrollador parece haber perdido interés en mantenerlas. Eran herramientas comerciales, luego libres y ahora abandonadas. Supongo que no hubo suficiente interés en ellos. –

2

He estado buscando maneras de hackear algo para llenar el edmx con los metadatos de la base de datos.

El resumen y la descripción larga de las propiedades de edmx se almacenan en elementos bajo el elemento EntityType.

<EntityType Name="EntityName"> 
    <!-- Without this element classes are typically generated with 
     "No Metadata Documentation available." --> 
    <Documentation> 
      <Summary>Entity Summary</Summary> 
      <LongDescription>Entity Long Description</LongDescription> 
      </Documentation> 
    <Key> 
     <PropertyRef Name="Id" /> 
    </Key> 
    <Property Name="Id" Type="String" Nullable="false" MaxLength="25" Unicode="false" FixedLength="true" /> 
    <!-- Lots of other properties --> 
    </EntityType> 

La sección correspondiente del archivo edmx, el lenguaje de definición de esquemas tienda (LSCD), es creado por System.Data.Entity.Design.EntityStoreSchemaGenerator.GenerateStoreMetadata(). O al menos este es el caso con EdmGen.

Voy a ver si el EntityStoreSchemaGenerator.StoreItemCollection se puede modificar antes de ser utilizado por EntityStoreSchemaGenerator.WriteStoreSchema (...) para generar el XML.

actualización

Bueno, eso era molesto. System.Data.Metadata.Edm.Documentation está sellado y solo tiene un constructor interno. Ambas propiedades de interés solo se pueden establecer internamente también. Parece un enfoque sin salida.

Cuestiones relacionadas