Saltar al contenido

Ingeniería inversa de un subconjunto de tablas para Entity Framework

Solución:

Si su base de datos es SQL Server o SQL Server CE 4.0, puede usar el “Generador de POCO inverso de Entity Framework” disponible en visualstudiogallery.msdn.microsoft.com

Realiza filtrado de tablas mediante el uso de TableFilterExclude, TableFilterInclude.

La forma en que funcionan los filtros es la siguiente:

  1. Leer el esquema
  2. Elimine las tablas que coincidan con el filtro de exclusión, si está presente.
  3. Incluya todas las tablas que coincidan con el filtro de inclusión, si está presente.

Ejemplo:

TableFilterExclude = new Regex("billing|report");
TableFilterInclude = new Regex("company");

Dadas las siguientes tablas:

  • alguna_tabla
  • empresa
  • company_billing_annual
  • company_billing_ledger
  • company_reports
  • eventos_empresa
  • otra_tabla.

Cualquier tabla con facturación o informe en el nombre se excluye inmediatamente. Se incluye cualquier mesa con empresa en el nombre.

Te quedaste con:

  • empresa
  • eventos_empresa

Encontré una solución que funciona, aunque requiere un par de pasos “adicionales”:

En el proyecto, haga clic derecho y seleccione Add > new Item. Seleccione Data a la izquierda, y ADO.NET Entity Data Model de la lista de elementos.

Desde el cuadro de diálogo / asistente que aparece ahora, puede seleccionar una base de datos para generar un modelo y, en este caso, puede seleccionar solo las tablas, vistas y procedimientos y funciones almacenados que necesita.

Después de agregar el modelo, puede expandirlo en el explorador de soluciones y debe encontrar las clases que necesita en YourModelName.edmx -> YourModelName.tt

Nota: No podrá arrastrar y soltar los archivos de origen, pero puede hacer clic con el botón derecho y elegir copy class. A continuación, puede pegarlos donde los necesite y aparecerán con un "1" anexado a sus nombres. Por lo tanto, necesitará hacer una refactorización ligera (cambiando el nombre de los archivos, las clases y los espacios de nombres), pero aún así es bastante sencillo.

Ahora puede eliminar el modelo original (el edmx-archivo), y todo lo que hay debajo.

Esta no es una solución perfecta, pero aún es más fácil que tener que generar una gran cantidad de representaciones de tablas y esperar a que VS complete el trabajo, especialmente si tiene muchas tablas, vistas, etc.

A partir de ahora, no hay forma de excluir tablas listas para usar con EF Power Tools. Dicen que esta solicitud de función ya está en la lista de espera, pero no está claro si se incluirá en el RTM.

He visto dos enfoques principales para solucionar esto:

  1. Modifique las plantillas de ingeniería inversa para ignorar todas las tablas no deseadas (aunque personalmente lo encuentro complicado). Si desea comenzar con las partes móviles, aquí tiene un artículo de Rowan Miller (http://romiller.com/2012/05/09/customizing-reverse-engineer-code-first-in-the-ef- Herramientas eléctricas/)

  2. Cree una base de datos ficticia con solo las tablas que le interesan y deje que la ingeniería inversa haga su magia. Una alternativa a esto es tener un “usuario de base de datos especial” que solo tenga acceso a las tablas relevantes y lo use cuando se conecte.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *