MVC3 y Entity Framework

Mi pregunta es bastante simple: ¿es una buena práctica colocar el archivo .edmx en la carpeta del modelo en una aplicación web de un proyecto MVC3?

mi respuesta es bastante simple, no estropees la capa de presentación (aplicación Whole MVC) con lógica de acceso a datos y modelado de datos.

Tener al menos 4 proyectos en su solución de Visual Studio, de abajo hacia arriba:

1 – ProjectName.Interfaces (biblioteca de clases, interfaces de las entidades);

2 – Nombre del proyecto.DAL (Biblioteca de clases, el único permitido incluso saber que se usa EF, las entidades POCO implementan las interfaces del proyecto 1 usando otro archivo donde redeclarar los mismos objetos usando clases parciales …);

3 – ProjectName.BL (biblioteca de clases, lógica de negocios, hace referencia a los dos proyectos por encima de 1 y 2);

4 – ProjectName.Web (aplicación ASP.NET MVC, Capa de presentación, hace referencia a dos proyectos 1 y 3, pero NO 2);

esto para simplificar las cosas, por supuesto, basado en mi experiencia, este es un diseño sólido, un poco exagerado para proyectos muy pequeños, pero vale la pena a largo plazo.

en mi opinión, el M de MVC, Modelo, NO es el modelo de datos, no es el EF, no está allí para hacer ORM vinculado al motor de base de datos específico.

esta respuesta es subjetiva por supuesto y se basa en mi experiencia personal 😉

Estoy de acuerdo con Davide aquí por completo. Solo quiero agregar que también debería considerar usar las plantillas POCO para generar objetos poco y no devolver objetos del marco de entidades a otra capa porque luego pone una dependencia en el marco de la entidad.

En algún punto inevitable, si no lo arranca en un proyecto separado, su código de acceso directo a datos termina arrojado a su código web. Lo veo todo el tiempo (y todos hemos sido culpables de ello en algún momento)

No creo que esto importe mucho.

Yo uso CodeFirst, entonces mi clase DbContext va a la carpeta Model.

Realmente, el EDMX está ahí solo para la generación de código, más allá de eso no hace mucho, no se implementa / publica en su servidor, etc. Entonces, dónde se queda no es importante. Puede crear otra carpeta para EDMX si lo desea, o ponerlo en el modelo como lo pidió.