2012-01-23 22 views
17

Tengo dos modelos entidad de datos dentro de un proyecto MVC3 A y B.No se pudo encontrar el modelo conceptual de tipo

he añadido recientemente el nuevo modelo de datos de la entidad B para hacer frente a algunas nuevas funcionalidades, el problema es que ahora el código existente ha dejado de funcionar y yo estoy recibiendo el siguiente error al intentar acceder al código dentro del modelo de entidad A.

el mensaje de error es:

Could not find the conceptual model type 'project.models.Bclass'

no entiendo por qué se tiene esta nueva funcionalidad afectado el código actual viendo como el modelo de entidad A no ha cambiado de ninguna manera. Y la funcionalidad B está en una clase separada y no interfiere con el modelo A.

Cuando se elimina el nuevo código del proyecto y se excluye el modelo de entidad B, el código funciona como debería.

Aquí es parte de la 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() 
+0

enviar el código que ha añadido, o explicar lo que hizo . – Nix

+0

El código agregado fue un simple inserto en la base de datos usando el marco de entidad y las clases relacionadas. –

+0

¿Puedes simular el código que has agregado? – Nix

Respuesta

12

Solución encontrado. Parece que en algunos casos (al azar) hay una confusión en el código generado por el entity framework. Aparentemente, se trata de un error conocido y debería aparecer una solución en versiones futuras. Mientras tanto, la solución a esto es mover el efm a una clase separada dentro de la solución.

2

Bueno, acabo de instalar EF 4.1 e intenté combinar DbContext con un EMDX - Cuando traté de devolver una vista, recibí el mismo error - por eso terminé aquí ... Creo que la forma de solucionar esto es separe la funcionalidad en asemblies separados en la solución ...

+1

Sí, POCO y edmx no mezclan http://social.msdn.microsoft.com/Forums/is/adonetefx/thread/4d9846a0-f890-41df-9444-cf2b4d2bd710 – dtanders

0

Usando Visual Studio 12, el problema aún no se ha resuelto. Como solución alternativa, configuré el segundo modelo de datos SQL utilizando clases de datos "anticuadas" que son anteriores a los modelos de entidades, todavía están allí y aún funcionan. Use Agregar - Nuevo elemento - (Categoría de datos) - Clases de LINQ a SQL, abra el Explorador de servidores, ubique el servidor y la base de datos, luego arrástrelos y suéltelos en el panel de clases de datos. La vieja escuela, pero supera convenientemente este inconveniente cuando no se necesita la funcionalidad completa de los modelos de entidad.

0

Quité los modelos EDMX, eliminar el paquete Entidad, vuelva a instalar la entidad 5.0 y obras.

7

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, (a partir de la guía vinculada a continuación)

  1. Haga clic derecho sobre la superficie del diseñador del modelo.
  2. En el menú contextual, elija Agregar elemento de generación de código.
  3. En el cuadro de diálogo Agregar elemento nuevo que se abre, seleccione Datos de la lista de tipos de plantillas instaladas a la izquierda.
  4. 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

+0

Creo que agrega automáticamente el elemento de generación de código (archivo .tt) cuando ve el cuadro de diálogo Agregar nuevo elemento y elige el modelo de datos de la entidad ADO.NET. – Zack

8

Tuve el mismo problema con 2 archivos diferentes .edmx en el mismo proyecto. Para el primer .edmx model había usado "Add Code Generation Item", para el segundo modelo que no tenía. El proyecto se estaba construyendo correctamente pero lanzando esa excepción en el tiempo de ejecución.

Resolví generar las clases .tt para el segundo .edmx model también.

1

Esto también se puede resolver mediante la generación de la nueva edmx en Visual Studio 2010 para que coincida con los más viejos ... (y la copia en los archivos que genera)

Cuestiones relacionadas