asp.net mvc 3 - tutorial - No se pudo encontrar el tipo de modelo conceptual.
layouts mvc 5 (8)
Bueno, acabo de instalar EF 4.1 y traté de combinar DbContext con un EMDX. Cuando intenté devolver una vista, obtuve el mismo error. Por eso terminé aquí ... Creo que la forma de evitar esto es separar la funcionalidad en asemblies separados en la solución ...
Tengo dos modelos de datos de entidad dentro de un proyecto MVC3 A y B.
Recientemente agregué el nuevo modelo de datos de entidad B para lidiar con algunas nuevas funciones, el problema es que ahora el código existente ha dejado de funcionar y aparece el siguiente error al intentar acceder al código dentro del modelo de entidad A.
El mensaje de error es:
No se pudo encontrar el tipo de modelo conceptual ''project.models.Bclass''
No entiendo por qué esta nueva funcionalidad ha afectado al código actual, ya que el modelo A de la entidad no ha cambiado de ninguna manera. Y la funcionalidad B está en una clase separada y no interfiere con el modelo A.
Cuando el nuevo código se elimina del proyecto y la entidad modelo B se excluye, el código funciona como debería.
Aquí está algo del stacktrace del error:
Exception : Could not find the conceptual model type for ''Project1.Models.CrossSession''.
Application Class - method : System.Data.Metadata.Edm.MetadataWorkspace -- GetEdmSpaceType
User : temp.user
Url : http://localhost/project1/auth/message
Stacktrace : at System.Data.Metadata.Edm.MetadataWorkspace.GetEdmSpaceType(StructuralType objectSpaceType)
at System.Data.Entity.Internal.InternalContext.UpdateEntitySetMappings()
at System.Data.Entity.Internal.InternalContext.TryUpdateEntitySetMappingsForType(Type entityType)
at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
Esto también se puede resolver generando el nuevo edmx en visual studio 2010 para que coincida con los anteriores ... (Y copiando sobre los archivos que genera)
Quité los modelos edmx, quité el paquete Entity, reinstalé la entidad 5.0 y funcionó.
Resuelto esto actualizando EntityFramework a la última versión (6.0) http://nuget.org/packages/EntityFramework/ .
Después de instalarlo regenera los modelos y funcionará;)
Solución encontrada. Aparece en algunos casos (aleatoriamente) hay una confusión en el código generado por el entity framework
la entity framework
. Aparentemente, se trata de un error conocido y debería haber una solución en futuras versiones. Mientras tanto, la forma de evitar esto es mover el efm
a una clase separada dentro de la solución.
Tuve el mismo problema con 2 archivos .edmx
diferentes en el mismo proyecto. Para el primer .edmx model
utilicé "Add Code Generation Item"
, para el segundo modelo que no .edmx model
. El proyecto se estaba construyendo correctamente pero lanzando esa excepción en tiempo de ejecución.
También resolví generar las clases .tt
para el segundo .edmx model
.
Una posible explicación es que si utiliza el primer enfoque de la base de datos y olvida agregar las clases de Entidad, obtendrá este error.
es decir (de la guía enlazada abajo)
- Haga clic derecho en la superficie del diseñador del modelo.
- En el menú contextual, elija Agregar elemento de generación de código.
- En el cuadro de diálogo Agregar nuevo elemento que se abre, seleccione Datos de la lista de tipos de plantillas instaladas a la izquierda.
- Elija ADO.NET DbContext Generator y luego haga clic en el botón Agregar.
Normalmente uso la guía de Julie Lerman; https://msdn.microsoft.com/en-us/library/jj206878(v=vs.113).aspx
Usando Visual Studio 12, el problema aún no se ha resuelto. Como una solución alternativa alternativa, configuré el segundo modelo de datos SQL utilizando las Clases de datos "antiguas" que preceden a los modelos de entidades; todavía están allí y siguen funcionando. Use Agregar - Nuevo elemento - (Categoría de datos) - LINQ A las clases de SQL, abra ServerExplorer, ubique el servidor y la base de datos, luego arrástrelo y suéltelo en el panel de clases de datos. Vieja escuela - pero supera convenientemente este problema altamente inconveniente cuando no se necesita la funcionalidad completa de los modelos de entidad.