2009-07-24 21 views
5

This question destaca que no puede usar los GUID generados del lado del servidor con el marco de entidad. Pero, quiero que la generación del GUID se maneje en el nivel DAL de la API de base de datos (es decir, cuando se llama al constructor de una entidad, quiero que el ID de la entidad se inicialice en un nuevo GUID). Mi plan es escribir una pequeña herramienta para generar un grupo de archivos de código que son clases parciales de las entidades. Tengo una manera de hacerlo, la pregunta es: ¿estoy loco por hacerlo de esta manera o es así como debería hacerlo?Al trabajar con GUID y Entity Framework

Mi problema es que, cuando el archivo edmx se actualiza, no quiero tener que editar también un montón de archivos de código, solo quiero ejecutar una herramienta que haga lo necesario.

De nuevo, ¿tengo la cabeza recta?

Respuesta

6

Bueno, si observas las clases parciales que Entity Framework genera de forma predeterminada, no hay un constructor predeterminado.

Así que haciendo esto en una clase parcial separada trabajará muy bien:

public partial class Customer{ 
    public Customer(){ 
     _ID = Guid.NewGuid(); 
    } 
} 

Así que probablemente no hay razón para no hacer algo como que está planeando.

Es posible que desee examinar las plantillas T4 para hacer esto. Así es como EF 4.0 (es decir, EF en .NET 4.0) le permite personalizar el código generado. Ahora, mientras que en 4.0 esa experiencia es bastante parecida, podría armar algo fácilmente basándose en T4 solo para crear estas clases de parciales que funcionarán perfectamente en .NET 3.5 SP1.

Esperanza esto ayuda

Alex

+0

sugerencia muy útil. Probablemente no use las plantillas T4 en este proyecto, pero es muy útil para otros proyectos. –

+0

Esto funcionó para mí cuando un valor predeterminado en el servidor de newid() no funcionaba. ¡Gracias! – el2iot2