2011-07-02 28 views
8

Estaba viendo algunos videos y tutoriales para EF 4.1, y no entiendo ningún beneficio de CodeFirst (excepto algunos si DB es muy pequeño 3-4 tablas y soy flojo para crear DB primero).¿Cuál es la ventaja de CodeFirst sobre Database First?

Principalmente, el mejor enfoque hasta ahora es crear una base de datos en algún tipo de editor de base de datos, que es más rápido que editar en el modelo de entidad y EF recoge todas las relaciones y crea asociaciones correctamente. Sé que hay desafíos al nombrar convenciones, etc., pero creo que es muy confuso administrar Code First porque todo parece código y es demasiado para codificar.

¿Qué es lo que CodeFirst puede hacer y Db primero no?

Respuesta

17

CodeFirst no puede hacer nada que DB no pueda hacer. Al final del día ambos usan el Marco de la Entidad.

Las principales ventajas de la utilización codefirst son:

  • velocidad Desarrollo - Usted no tiene que preocuparse por la creación de una base de datos que acaba de empezar a programar. Bueno para los desarrolladores que provienen de un entorno de programación sin mucha experiencia DBA. También cuenta con actualizaciones automáticas de la base de datos, por lo que cada vez que modele los cambios, la base de datos también se actualizará automáticamente.
  • POCOs - El código es mucho más limpio que no termina con un montón de código autogenerado. Usted tiene el control total de cada una de sus clases.
  • simple - usted no tiene un modelo edmx para actualizar o mantener

Para más información ver Code-first vs Model/Database-first y aquí Code-First or Database-First, how to choose?

+2

Honestamente escribir código C# para las propiedades y los metadatos es la cita más lenta y difícil de manejar cuando hay de las propiedades van más allá 10 que es muy probable que suceda. Hasta donde se genera el código, no me importa qué tan sucio se vea. Actualización automática de la base de datos, esto suena interesante, lo verificaré. –

+5

+1 para 'CodeFirst no puede hacer nada que DB primero no pueda. –

+0

Pobres capacidades de mapeo invalidan CodeFirst, ya que su base de datos siempre reflejará sus entidades ... –

2

migración fue habilitada en ADO.NET Entity Framework 4.3 para CodeFirst, por lo que pueda actualizar fácilmente los cambios del modelo a la base de datos a la perfección Reference 1

video detallado: Complete Reference Video

7

Viniendo de un enfoque DataCentric, siempre me parecerá extraño que a la gente le guste crear en un primer enfoque de código. Cuando diseño mi base de datos, ya estoy pensando en lo que cada una de las tablas es como si fueran clases de todos modos. Cómo se vinculan y cómo fluirán los datos. Puedo visualizar todo el sistema a través de la base de datos.

Siempre me han enseñado que trabajas desde cero, que fundas bien y todo lo demás seguirá. Creo muchos y diferentes sistemas para muchas compañías diferentes y la velocidad con la que lo hago se basa en el hecho de que una vez que tengo un modelo sólido de base de datos, ejecuto mi generador de códigos personalizado que crea las Vistas/Procedimientos almacenados como así como mi Controller/BusinessLayer/DataLayer para mí, pongo todo esto junto y todo lo que tengo que hacer es crear la interfaz.

Si tuviera que crear todo el sistema en código primero para generar la base de datos, así como todos los demás elementos, la imagen tardaría mucho más. No digo que tenga razón en ningún aspecto, y estoy seguro de que probablemente haya formas más rápidas y más experimentadas de desarrollar sistemas, pero hasta ahora, no he encontrado ninguno.

Gracias por dejarme hablar y espero que mis puntos de vista hayan ayudado un poco.

+1

Primero encontré el código absolutamente inútil, o tenemos la base de datos preparada o creamos base de datos fácilmente con las herramientas de base de datos y tenemos una plantilla de texto que lee la base de datos y genera el primer modelo de código. Los diseñadores de bases de datos son más fáciles de visualizar y cambiar. Y, sobre todo, tienes el control total. –

1

Bueno, depende de su proyecto. Voy a tratar de hacer una sintasa algunas ideas:

  • Usted tiene el control total sobre las clases de entidad. Ya no se generan, no tiene que actualizar las plantillas T4 ni usar clases parciales ...
  • El modelo EDMX desaparecerá en EF7 a favor del modelo CodeFirst. Por lo tanto, tenga en cuenta si planea migrar a EF o si tiene proyectos en un futuro cercano que podrían usar EF7.
  • Combinación más fácil en caso de que varios desarrolladores estén trabajando en el modelo +/- Las anotaciones y la asignación se deben realizar manualmente. Yo diría que el primer enfoque del código parece más ligero (menos hinchazón) y podemos mantener las cosas simples (el modelo visual podría ocultar la complejidad no deseada). Abierto a la API Fluent.
  • Aún puede visualizar el modelo a través de Power Tools, pero el modelo es de solo lectura. Cualquier cambio en el modelo debe hacerse manualmente (incluso las entidades iniciales se pueden generar desde cero). No tiene modelos parciales (diagramas), pero nuestros modelos deben ser lo suficientemente pequeños.
  • Parece primera base de datos está mejor integrado con el SP y los resultados de la función (algunas mejoras se han hecho en EF6)
Cuestiones relacionadas