entity-framework - registro - entity framework ejemplo
¿Cómo puedo hacer que el diseñador del modelo de datos de la entidad use las descripciones de las columnas de mi base de datos? (3)
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 el estudio de administración de SQL. Cuando creo el edmx en Visual Studio, ¿cómo puedo hacer que lea esas descripciones y las use para agregar comentarios a mis clases generadas? Sé que puedo usar el Resumen y la Descripción larga en las propiedades edmx, pero estoy buscando una manera de hacerlo sin tener que copiar y pegar cada descripción.
¡Gracias!
Hay una solicitud de función para esto. Siéntase libre de agregar sus votos para ayudar a que esto esté disponible en el futuro: Recupere las Descripciones de SQL en la solicitud de la característica Entity-Framework
Huagati tiene algunas herramientas excelentes para trabajar con EF y L2S. Una de las características es actualizar la documentación de EF basada en la base de datos SQL: el sitio web de Huagati
Desde el sitio web: Actualizar la documentación del modelo de datos de la entidad ADO.NET de la base de datos recupera las descripciones de tabla y columna de texto libre, y las definiciones de índice de la base de datos y actualiza los campos de documentación xml en el diseñador EDMX con las descripciones.
Parece que buscan estos campos en la base de datos y luego actualizan el modelo XML directamente. Probablemente alguien podría crear un complemento de 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 parece que nunca encuentro tiempo para estos!) .
¡Espero que ayude!
He estado buscando formas de piratear algo para completar edmx con los metadatos de la base de datos.
Las propiedades de resumen y descripción larga 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 relevante del archivo edmx, el lenguaje de definición de esquema de tienda (SSDL), es creada por System.Data.Entity.Design.EntityStoreSchemaGenerator.GenerateStoreMetadata() . O al menos este es el caso de EdmGen.
Voy a ver si EntityStoreSchemaGenerator.StoreItemCollection se puede modificar antes de que lo utilice EntityStoreSchemaGenerator.WriteStoreSchema (...) para generar el XML.
Actualizar
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. Así que parece un enfoque de callejón sin salida.
No sé que el diseñador tenga puntos de extensibilidad. Sin embargo, una vez que los campos Resumen y Descripción larga se completen 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 rellenados.
Entonces, puede simplemente copiarlos y pegarlos todos 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 el 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 dañar su archivo edmx y debe comenzar de nuevo).
Si tienes modelos grandes y estás haciendo muchos de ellos, 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 el campo de descripción de SQL Server. Sería una buena solicitud de función.