2010-07-25 174 views

Respuesta

7

Pros

  1. clases de entidad ligeros o POCO base.
  2. Más control sobre las clases de entidad ya que las codifica usted mismo en lugar de depender de EF para generarlas. Esto significa que no tiene que definir clases parciales para hacer anotaciones de datos.
  3. Opción para nunca tener que especificar la asignación en cualquier lugar. La convención se hace cargo de la configuración.
  4. DbContext sigue el patrón de repositorio.
  5. Lazy loading, entidad relacionada loading all all care of you. Por ejemplo, un modelo de publicación puede declarar el modelo de autor en POCO y el código de EF primero asignará esta relación automáticamente. De nuevo, el uso de la convención nos hace tan productivos.
  6. Funciona muy bien para aplicaciones totalmente nuevas.
  7. La generación de vistas ASP.NET MVC funciona muy bien.
  8. ModelBinder funciona de manera normal.

Contras

  1. No hay soporte API para personalizar el Convenio de correspondencia de la base de datos como en Fluido NHibernate.
  2. Bit difícil de asignar a las bases de datos existentes. (Esto podría cambiar en la versión de lanzamiento).

Para código de ejemplo y mapeo de las bases de datos existentes utilizando EF 4.0 Código Primera ver esta entrada del blog. http://theminimalistdeveloper.com/2010/07/28/how-to-map-pocos-to-existing-databases-in-entity-framework-4-0-code-first-and-asp-net-mvc-2/

+0

tus Contras. no son verdad! debido a una plantilla T4 está disponible para aprovechar EF Designer para apoyar EF-Code First simplemente! –

1

Contras:

  • ya que no tienen EDMX, no se puede pregenerate vistas
  • todavía no tiene licencia para la activación. Con suerte, esto cambiará pronto.

Pros

  • Dado que no hay ningún esquema fijo, se puede construir dinámicamente uno en tiempo de ejecución.

La mayoría de las cosas son exactamente iguales (carga lenta, carga explícita, etc.). Algunos más son asuntos de preferencia personal (la API).

+0

¿Qué pasa con características como lazy-load, foregin keys, procedimientos almacenados, etc.? –

+0

@Craig "Como no tiene EDMX, no puede pregenerar vistas" Me temo que esto no es cierto. Puede generar vistas basadas en sus clases de modelo, tenga o no archivos edmx. –

+0

@Bikal: ¿Cuál es la sintaxis de EdmGen para esto? Un PM de EF me dijo que no se podía hacer hace un año. ... o estás confundiendo vistas MVC con vistas EF? –

0

Como usted ha preguntado específicamente sobre la carga lenta, aquí hay una descripción que muestra Working with Lazy Loading with Entity Framework Code First, donde está habilitada de forma predeterminada. Para responder específicamente a esa parte de su pregunta, sí, con Code First todavía obtiene los beneficios de Lazy Loading, y de hecho, como muestra la publicación, tiene un control muy detallado de esta característica.