58

Estoy a punto de comenzar a implementar la infraestructura de acceso a datos de un proyecto que fue diseñado con un enfoque de DDD (es mi primer intento de DDD, entonces ser amable ;-)).ADO.NET Generador de DbContext vs. ADO.NET Poco Entity Generator (ObjectContext)

Utilizaré Entity Framework. Hasta ahora, estaba buscando el método de Julie Lerman en su excelente libro, Programming Entity Framework, donde se usa ADO.NET POCO Entity Generator, con algunos cambios en las plantillas T4 y algunos códigos más personalizados.
Hoy empecé a leer artículos sobre EF4.1 y el generador ADO.NET DbContext, utilizando primera base de datos enfoque, y estoy tratando de decidir con cuál debería ir.

El enfoque de DbContext y EF4.1 en DDD parece ser una forma agradable y más limpia que las entidades de POCO, pero me temo que podría ocasionar algunos problemas en el futuro cercano, ya que EF4.1 todavía está en RC.

De ADO.NET team blog, sé que EF4.1 no significa incluyen: soporte

  • Enum
  • apoyo espacial tipo de datos almacenados
  • soporte Procedimiento de Código El primer soporte Migración
  • en el Código Primero
  • Convenciones personalizables en Code First

Según tengo entendido, ya que estaré usando Base de datos Primero hay un número menor de funciones que no se incluyeron.

En conclusión, mi pregunta es:
¿Puedo reemplazar Entidades POCO generador con EF4.1 DbContext Generador?

+0

[muy tangencialmente] relacionado (Linq a Sql): http://stackoverflow.com/questions/3471455/is-dbcontext-the-same-as-datacontext –

Respuesta

54

Desde el punto de vista de limpiar creación de entidades POCO, no hay diferencia entre los dos generadores. Ambos generadores producen las mismas entidades, sin embargo, ADO.NET POCO Entity Generator se basa en ObjectContext's API, mientras que ADO.NET DbContext Generator se basa en DbContext's API.

La API de DbContext tiene algunas características nuevas muy agradables (local, consulta en la propiedad de navegación, etc.) y la API es de alguna manera simplificada pero al mismo tiempo parece que faltan algunas características utilizadas en ObjectContext API en DbContext API (o al menos aún no se ha explorado lo suficiente).

EF 4.1 RC es la versión de puesta en marcha. Significa que puede compilar una aplicación real porque la API no cambiará en RTW (solo se corregirán los errores). También RTW debería estar en el próximo mes, así que creo que no estará listo con su aplicación antes de que se envíe la versión final.

ObjectContext API o DbContext API?ObjectContext La API está mucho mejor cubierta por documentación y publicaciones en el blog. Puedes encontrar muchos ejemplos al respecto. También sus limitaciones ya son bien conocidas. DbContext API es una nueva versión. Una publicación muy prometedora, principalmente debido al enfoque de primer código. Todavía hay un número muy limitado de publicaciones en blogs, ningún libro y la API no está suficientemente probada. Entonces, ¿depende si estás listo para luchar con la nueva API? De lo contrario, la API ObjectContext sigue siendo una buena opción porque no necesita el enfoque de primer código.

+0

¿Qué quisiste decir con "local" (en la lista de nuevas características)? –

+4

@Danny: 'DbSet' tiene la propiedad' Local' que le permite consultar fácilmente entidades ya cargadas sin una nueva consulta a la base de datos. –

+2

Gracias, me decepcionó ver que no llegó a VS2010SP1. –

Cuestiones relacionadas