seleccionado referencia recursos recuperar reciente pueden puede proyecto proveedor para mvc metadatos mas los hace generador framework especificados error encuentra encontrar embargo ejecutar datos compatible codigo cargar archivo entity-framework poco efpocoadapter

entity framework - referencia - "Información de metadatos no encontrada" al usar la Plantilla POCO de EF4?



su proyecto hace referencia a la version mas reciente de entity framework oracle (8)

No estoy seguro acerca de este ... parece un poco raro, así que esta es una posibilidad remota.

Pero a veces la llamada ocasional ObjectContext.MetadataWorkspace.LoadFromAssembly () ayuda.

E incluso si no existe, hay una segunda sobrecarga que proporciona salida de estilo de rastreo.

es decir

Assembly assembly = typeof(AnnouncementText).Assembly; context.MetadataWorkspace.LoadFromAssembly( assembly, (message) => Console.WriteLine(message) ); foreach(var at in context.AnnouncementTexts) ...

Y vea qué mensajes recibe (si corresponde).

Espero que esto ayude

Alex

Acabo de instalar la Plantilla POCO para EF4. Tengo una única entidad en mi modelo, AnnouncementText , y los archivos T4 parecen estar generados correctamente. Intentar acceder a esta nueva entidad arroja el siguiente error cuando MyObjectContext.AnnouncementTexts propiedad MyObjectContext.AnnouncementTexts :

InvalidOperationException: no se pudo encontrar la información de asignación y metadatos para EntityType ''MyNamespace.AnnouncementText''.

Las propiedades en el POCO AnnouncementText parecen coincidir con las columnas en la base de datos, y no he cambiado ninguno de los códigos autogenerados.

El seguimiento de la pila es:

at System.Data.Objects.ObjectContext.GetTypeUsage(Type entityCLRType) at System.Data.Objects.ObjectContext.GetEntitySetForNameAndType(String entitySetName, Type entityCLRType, String exceptionParameterName) at System.Data.Objects.ObjectContext.CreateObjectSet[TEntity](String entitySetName) at MyNamespace.MyObjectContext.get_AnnouncementTexts() in C:/<snip>/MyObjectContext.Context.cs:line 65 at MyNamespace.Class1.Main() in C:/<snip>/Class1.cs:line 14

Si .tt archivos .tt de la solución y .tt la generación de código en el modelo, puedo acceder a la propiedad sin problemas.

Aquí está mi código, en caso de que pueda ayudar:

using (var context = new MyObjectContext()) foreach (var at in context.AnnouncementTexts) Console.WriteLine(at.Title);

¿Alguna idea sobre lo que podría estar mal?


Si copia un archivo EDMX a otro proyecto, la Acción de compilación (en el panel Propiedades) volverá al valor predeterminado "Ninguno" en el proyecto de destino, lo que puede causar el error "No se pudo encontrar el nombre de EntityContainer". , que es porque no se están generando recursos. (Si este es el caso, cuando abra el archivo DLL que contiene el modelo en Reflector, no habrá recursos). Establecer la Acción de compilación en "EntityDeploy" y reconstruir la solución corregirá esto.


Extiendo NopCommerce creando un proyecto separado y un edmx dentro de él. Las plantillas de POCO se utilizan para generar mi clase personalizada descendiente ObjectContext .

Verifiqué todas las propiedades, todos los espacios de nombres y todavía recibía la excepción mencionada.

El objetivo era eliminar el archivo MyModel.Designer.cs que generó otra clase de descendientes ObjectContext (con otro nombre y dentro de otro espacio de nombres).


En Solution Explorer, haga clic con el botón derecho en el archivo Entity Data Model (.edmx) y haga clic en ''Abrir con''. Se abrirá un cuadro de diálogo para elegir un programa para que abra el archivo. Seleccione o haga doble clic en ''Editor de XML (texto)''.

Ahora está mirando la versión XML del archivo EDM donde puede editar fácilmente el nombre ''EntityContainer''.

Si ha cambiado la conexión en el archivo webconfig, asegúrese de que ''DefaultContainerName'' es el nombre en la sección ''EntityContainer'' en ese archivo XML.

Por lo general, cuando actualiza el NombreContainer predeterminado en el archivo * .Designer.cs, no actualiza el archivo XML. Entonces lo tienes que hacer manualmente.


Recientemente me encontré con este mismo error nuevamente al mover mi archivo EDMX a una nueva ubicación en la solución. Aparentemente, hay un par de espacios de nombres diferentes cuando se trata de archivos EDMX. Existe el espacio de nombre que ingresa mediante el asistente al crear el archivo EDMX inicial (N1), otro que aparece en el SSDL que se ve así (N2):

<Schema Namespace="..." ..

Luego está el espacio de nombres del código generado que puede (opcionalmente) especificarse en el diseñador (N3), y finalmente están los espacios de nombres ocultos de los recursos que se compilan en su ensamblaje final (N4).

Por lo que puedo decir, el espacio de nombres N2 solo es realmente relevante dentro del SSDL. Creo que este espacio de nombres comienza como N1 , el que inicialmente ingresas en el asistente.

De forma similar, el espacio de nombre N3 solo es relevante en la forma en que normalmente se encuentran los espacios de nombres de C #.

Aquí está la parte problemática. Los espacios de nombre de categoría N4 son una función del directorio en el que reside su EDMX (en relación con su directorio de proyecto). Podrías pensar, ¿y qué? ¡Resulta que esos espacios de nombres también se mencionan en tu archivo App.config! Específicamente, busca una parte como esta:

connectionString="metadata=res://*/Database.Master.csdl|...

Esa parte que dice "Database.Master.csdl" es el nombre de su recurso CSDL. Si esos nombres de recursos no se sincronizan, recibirá un error como el anterior, o quizás:

El nombre predeterminado de EntityContainer ''[nombre]'' no se pudo encontrar en la información de asignación y metadatos.

La solución simple es modificar App.config para especificar el nombre de recurso correcto para cada parte de su asignación EF (CSDL, SSDL y MSL). Si no está seguro de cuáles son exactamente esos nombres, consulte los recursos de su compilación compilada en ILSpy o dotPeek .


tenemos el mismo problema al no usar el modelo de edmx, nos usamos EF powertools beta 2, con la primera característica del código de ingeniería inversa para generar nuestras entidades, el contexto y las vistas.

y tenemos el extraño comportamiento, que en equipo en varias máquinas el hash para las vistas compiladas generadas es diferente, y luego en el equipo TFS se construye igual que en las otras máquinas, obtenemos una excepción como la siguiente. La pregunta se basa en lo que las herramientas eléctricas están generando el hash para las vistas compiladas. y lo que podemos cambiar es consistente, estamos usando las herramientas de potencia beta 2 con EF 4.3.1, system.data .v4.0.30319, contra un db de Oracle usando los controladores de devart oracle.

el contexto genera vistas

// ------------------------------------------------ ------------------------------

//

// Este código fue generado por una herramienta.

// Versión en tiempo de ejecución: 4.0.30319.551

// Los cambios en este archivo pueden causar un comportamiento incorrecto y se perderán si se regenera el código.

//

// ------------------------------------------------ ------------------------------

[assembly: System.Data.Mapping.EntityViewGenerationAttribute (typeof (Edm_EntityMappingGeneratedViews.ViewsForBaseEntitySetsC6473E0A11A196A36CC5839589DE2DE553F202E361016A89F2142797168B2534))]

espacio de nombres Edm_EntityMappingGeneratedViews

{

/// <Summary> /// The type contains views for EntitySets and AssociationSets that were generated at design time. /// </Summary> public sealed class ViewsForBaseEntitySetsC6473E0A11A196A36CC5839589DE2DE553F202E361016A89F2142797168B2534 : System.Data.Mapping.EntityViewContainer { /// <Summary> /// The constructor stores the views for the extents and also the hash values generated based on the metadata and mapping closure and views. /// </Summary> public ViewsForBaseEntitySetsC6473E0A11A196A36CC5839589DE2DE553F202E361016A89F2142797168B2534() { this.EdmEntityContainerName = "Context"; this.StoreEntityContainerName = "CodeFirstDatabase"; this.HashOverMappingClosure = "2c6bbce22db7c9c65f8a70c5a1bae1225522a2124aad50e74bdc186ce8c70508"; this.HashOverAllExtentViews = "26cad9d7334571a0116f89413345d00ec8e031706228df6e653c7b6396c94591"; this.ViewCount = 56; }

excepción:

System.Data.EntityCommandCompilationException: System.Data.EntityCommandCompilationException: Se produjo un error al preparar la definición del comando. Ver la excepción interna para más detalles. ---> System.Data.MappingException: la información de asignación y metadatos para EntityContainer ''Context'' ya no coincide con la información utilizada para crear las vistas generadas previamente.


Tuve un problema similar al integrar varios proyectos.
El problema era que tenía más de un edmx ya que tenía muchos proyectos.

La cadena de conexión era la misma, pero el espacio de nombres era diferente.

Para resolver esto, elija una de las conexiones para usar y cambiar las otras.
Tenga en cuenta que deberá realizar el cambio en designer.cs y también en el archivo xml.


Tuve un problema similar después de cambiar la vista sql. Tiene el mouse derecho sobre el archivo tt para actualizarlo y lo arregló.