Tengo problemas con Visual Studio 2012, tratando de agregar un controlador MVC4 con andamios. Idealmente, me gustaría tener un modelo Entity Framework (archivo edmx, etc.) generado desde una base de datos usando Add New Item - Modelo de datos de entidad ADO.NET (es decir, no el código primero) en un ensamblaje separado de mi aplicación web. Sin embargo, cuando configuro y uso Agregar controlador, especificando "Controlador MVC con acciones de lectura/escritura y vistas, utilizando Entity Framework" y eligiendo una clase de modelo y una clase de contexto de datos de mi ensamblado DatabaseModel, aparece el siguiente mensaje de alerta.Andamio MVC4 de base de datos modelo Entity Framework en Visual Studio 2012
'Ifl.Payforit4.DatabaseModel.Mno' no es parte de la clase especificada 'Ifl.Payforit4.DatabaseModel.Payforit4Entities', y la clase de los 'Ifl.Payforit4.DatabaseModel.Payforit4Entities' no se pudo modificado para agregar una propiedad 'DbSet' al . (Por ejemplo, clase los 'Ifl.Payforit4.DatabaseModel.Payforit4Entities' podría estar en un conjunto compilado.)
No ser capaz de modificar la clase tiene sentido ya que está en otro conjunto, aunque en el mismo solución, y generado automáticamente a través de T4 pero mirando el código generado automáticamente para Payforit4Entities, la propiedad 'DbSet' ya está bastante clara.
public DbSet<Mno> Mnoes { get; set; }
Yo he probado un número de otras cosas.
- poner el modelo de datos directamente en la aplicación web
- cambiar la clase de modelo para una variedad de otras tablas de la base de datos en caso de que haya un problema con la clase Mno
- reducir el modelo de datos que acaba de una tabla sencilla y simple
- utilizando Entity Framework Power Tools Beta 2 para realizar ingeniería inversa en un modelo de Code First. Esto generó un nuevo conjunto de errores. Puedo ver por qué es una versión beta.
- cambiar la estrategia de ADO.NET Data Model generación de código de Ninguno a predeterminado para crear un modelo de datos basado en ObjectContext en lugar de DbContext
- Desactivación de pluralización por lo que el nombre de la propiedad es Mno en lugar de Mnoes
Ninguno de ellos funcionó. Lo único que sí funcionó fue escribir a mano una clase derivada de Code First DbContext y POCO. Casualmente, cada ejemplo que he encontrado que demuestra que el andamio MVC4 usa este tipo de modelo de datos. ¿Hay algo en algún lugar que dice que Code First es el único tipo de modelo de datos que funciona con andamios MVC4? ¿Alguien ha logrado andamiar una base de datos primero (.edmx) modelo de datos en Visual Studio 2012? La base de datos es lo suficientemente compleja como para preferir seguir con una primera estrategia de base de datos.
Veo que tendrían que haber algunas diferencias en el andamiaje de Code First versus Database First models. Por ejemplo, el primero tiene la propiedad POCO que contiene la clave indicada por un KeyAttribute, mientras que el segundo contiene esa información en los archivos del modelo edmx. ¿Es este el motivo de la función de ingeniería inversa en Entity Framework Power Tools? ¿Se espera que nos alejemos de los archivos edmx para revertir los modelos Code First diseñados con el fin de utilizar el andamio MVC4? En caso afirmativo, ¿se espera que sigamos utilizando los proyectos de Datos dinámicos hasta que se hayan terminado las herramientas de poder de Entity Framework?
Esto funcionó de maravilla y apoya a StackOverflow por darme este enlace mientras escribía mi pregunta. –
Lo mismo aquí, no puedo creer lo retardado que esto es jajaja. – Dave
Cuando intento esto, aparece "El tipo de modelo no es válido. Seleccione un elemento de la lista". – JasonRed