2012-09-10 12 views
10

Estoy usando MVC3, C# 4.0 y Entity Framework en Visual Studio 2010. Estoy generando mis archivos edmx y Designed.cs desde una base de datos. Entonces estoy generando interfaces de las entidades en el archivo Designer.cs como parte de mi estructura nLayer.Generando interfaces desde la base de datos de la entidad primer código autogenerado

El código original es

public partial class DataEntrySummary : EntityObject 

que luego se convierte en

public partial class DataEntrySummary : EntityObject, Mb.Interface.IDataEntrySummary 

Mi preocupación es que cuando cambia la base de datos (y lo hará) y que se regeneran los archivos EDMX voy a perder toda la interfaz definiciones.

Hay una forma mejor de lograr el mismo resultado sin tener que regenerar las interfaces.

Gracias

Respuesta

20

EF genera las clases con la palabra clave partial para que pueda agregar funcionalidades adicionales a las entidades al crear otro archivo y colocar las cosas específicas de la interfaz allí.

public partial class DataEntrySummary : Mb.Interface.IDataEntrySummary 
{ 
} 

Estos archivos no se verán afectados cuando EF actualice el modelo.

+0

Gracias, respuesta completa, clara y práctica. –

+0

Bien, escaneé completamente la palabra clave 'partial' y ni siquiera me di cuenta ... – JDandChips

1

creo que la creación de un evento en la actualización del modelo de manera que cada vez que el modelo se actualiza agregará las definiciones de interfaz.

Otra opción es crear una clase proxy que implemente una interfaz específica y herede del modelo.

+0

Gracias por esto - buena respuesta –

2

Se dirige en la dirección correcta. Pero para conservar las interfaces después de cada actualización de EDMX, deberá personalizar los archivos T4.

Puede ver los archivos T4 personalizados desde https://entityinterfacegenerator.codeplex.com/ Generan 1 interfaz para cada clase para que pueda simular y probarlos por separado.

Por lo tanto, cada vez que agrega una nueva tabla o campo, puede simplemente ejecutar sus plantillas T4 junto con las proporcionadas por Microsoft para generar tipos EF.

Atentamente.

+1

Gracias por esto, por desgracia, ya es demasiado tarde ya que ahora nos hemos movido al código primero. Sin duda volveré a revisar esto si hay una necesidad adicional. –

+0

Claro. Gracias por revisar el proyecto. Espero que pueda ayudar a las personas como nosotros que tuvieron que decidir qué tecnología usar. El código IMO primero es excelente solo para nuevos proyectos. La base de datos primero parece más práctica. Es por eso que construyo el proyecto para ayudar a las personas que no pudieron pagar el código primero. – Believe2014

Cuestiones relacionadas