De repente me sale un MetadataException en instancias de mi generado ObjectContext clase. La cadena de conexión en la Aplicación.Config parece correcto – no ha cambiado desde la última vez que trabajó – y he tratado de regeneración de un nuevo modelo (edmx-file) de la base de datos subyacente con ningún cambio.

Alguien tiene alguna idea?

Más detalles: no he cambiado las propiedades, no he cambiado el nombre de cualquier salida de asambleas, no he intentado incrustar el EDMX en la asamblea. He simplemente esperó 10 horas de salir de su trabajo hasta que me dieron la espalda. Y entonces no funciona.

He tratado de recrear la EDMX. He intentado recrear el proyecto. Incluso he intentado recrear la base de datos, a partir de cero. Sin suerte alguna.

  • Si una pregunta sobre un producto específico que tiene más de 200k de puntos de vista, entonces el producto no está funcionando de la forma en que los usuarios están esperando. Me gustaría ver a Microsoft frente a esto. Aquí hay un enlace a darles sugerencias si tienes tiempo: visualstudio.uservoice.com/forums/121579-visual-studio.
  • Mi problema resuelto, mediante la sustitución de la cadena de conexión copia de la db de la capa de proyecto.
InformationsquelleAutor J. Steen | 2009-03-27

43 Comentarios

  1. 822

    Esto significa que la aplicación no es capaz de cargar el EDMX. Hay varias cosas que pueden causar esto.

    • Usted podría haber cambiado el MetadataArtifactProcessing propiedad de la modelo a Copiar en el Directorio de Salida.
    • La cadena de conexión que podría estar equivocado. Sé que dices que no ha cambiado, pero si han cambiado otras cosas (por ejemplo, el nombre de una asamblea), todavía podría estar equivocado.
    • Usted podría estar usando una post-compilar la tarea de integrar la EDMX en la asamblea, que ya no funciona por alguna razón.

    En definitiva, no es realmente suficiente detalle en su pregunta para dar una respuesta exacta, pero espero que estas ideas deben obtener en el camino correcto.

    Actualización: he escrito un blog con más de completar los pasos para la solución de problemas.

    • El connectionstring, a pesar de mis esfuerzos para compararlo con un contenido de comparar la utilidad de la última vez, que estaba mal.
    • Fue el connectionstring para mí también. Cuando usted tiene Pruebas de Integración que también necesitan connectionsting en su propia Aplicación.configuración, las cosas pueden ir fuera de sincronización cuando se actualiza el edmx.
    • sí, me hizo cambiar la configuración de la MetadataArtifactProcessing y el post-compilar, etc. entonces, ¿cómo puedo solucionar el problema?
    • OK, me fijo más en la configuración de «Incrustar»; compilar, luego reinicio para el otro. Que resolver mi problema.
    • Si es la cadena de conexión, y que están haciendo «DB primer» usted puede decir fácilmente lo suficiente (en la mayoría de los casos) mediante la comparación de lo que usted consigue cuando usted «actualización de la base de datos» en la edmx diseñador con lo que tienes en tu web.config o app.config.
    • En mi caso, he excluido la edmx desde el proyecto porque pensé que no la necesito (yo usé el de dbContext generador). El edmx no se incluirán como un recurso en la asamblea. La revisión se incluyen.
    • Fantástico!!! He cambiado conntection cadena de metadatos=res://*/;provi.. y funcionó!!
    • Tenía el mismo problema, probé tu solución, quería darle +1, me dí cuenta que ya hizo en el pasado. No recuerdo tener este problema antes ;). Esta vez, en mi caso fue correcta cadena de conexión en la Biblioteca de clases con edmx y mal en la aplicación web cuando se utiliza.
    • El blog citado en la respuesta ayudado a resolver mi problema.
    • Impresionante guía. Para mí, había copiado de otra cadena de conexión que utiliza res://*/Base de datos.MyModel2…, cuando yo REALMENTE quería res://*/MyModel1… (Base de datos es una carpeta dentro de mis Pruebas de Integración del proyecto)
    • En mi caso, la cadena de conexión que estaba mal.
    • Cómo saber el Assemblie archivo ?
    • Verificación de entityframework dll se hace referencia y copy&paste de la cadena de conexión de la biblioteca como es.
    • después de seguir estos pasos, tengo este error «El tipo de entidad Departamento no es parte del modelo para el contexto actual.»
    • En mi caso, yo me había mudado a la edmx a una carpeta diferente y correctamente cambiado la res rutas de acceso en la web.config, pero yo no había cambiado en la web.de depuración.config y web.de liberación.config transformaciones
    • fue la cadena de conexión de error. buen tiro. gracias.
    • Gracias @Shimmy por compartir su revisión. Lo que has compartido en 3:12 trabajó para mí también. Más uno a ustedes por tomarse el tiempo para volver a publicar y compartir tu solución!)
    • He movido el archivo EDMX a una sub-carpeta, pero no estoy seguro de cómo solucionarlo. He ejecutado Run Custom Tool en el TT de archivo, pero no se ha solucionado.
    • Enlace en la sección de actualización es realmente útil. Gracias!
    • En mi caso fue un db columna de la tabla de tipo de geografía, que no es compatible
    • Va fuera de lo que Shimmy dijo, he cambiado MetadataArtifactProcessing de incrustar (que estaba en lo correcto) para copiar (que está mal), se reconstruye el proyecto, limpiar la carpeta bin de forma manual, cambió de nuevo a incrustar, reconstruido, y funcionó. Como una nota del lado, llegar a la MetadataArtifactProcessing haciendo clic derecho en un área abierta de la edmx diseñador y seleccionando «Propiedades» desde el menú de contexto.
    • Después he refactorizado nombre de base de datos y lo reemplazó en el código en todos los lugares tienen mencionada excepción. Fue capaz de modelo de actualización de la base de datos a nivel de base de datos relacionados con el proyecto, sin embargo después de la implementación de excepción siempre fue lanzado como no se utilizaron diferentes archivo de configuración. Han utilizado la cadena de conexión del proyecto con el modelo de proyecto para la implantación y el problema fue solucionado.
    • Mientras que la creación de la ADO modelo de datos, yo no acepte el valor predeterminado de nomenclatura de valores y modificado algunos. Esto provocó que la cadena de conexión extraños valores. Repetí el mismo proceso, acepte todos los valores predeterminados de este tiempo. Funciona perfecto. Gracias
    • Tu blog me ha ayudado. El párrafo», Que Archivo de configuración?» lo hizo. La cadena de conexión en el web.config estaba mal, incluso tho en la aplicación.config que yo pensaba que era se fue a la derecha. Fija la web.config conection string y que resuelto. Gracias.
    • Tu blog me ayudó a entender el problema. En concreto, de su no que la edmx no se encuentra, su que los Metadatos incorporados los recursos generados a partir de la edmx que no se encuentran. En complile tiempo de Visual Studio utiliza una tarea de MsBuild para compilar los metadatos como 3 recursos incrustados en la salida de la asamblea (que se puede ver en ILSpy). Si la asamblea puede ser encontrado Y que contiene los recursos de que todo está bien y bueno, pero ¿qué sucede si usted está usando NANT como el compilador?… también su puede arreglar… akutz.wordpress.com/2008/10/12/nant-and-processing-edmx-files
    • Fijo mediante la actualización de la EDMX (edmx > click derecho > modelo de actualización de base de datos)
    • En nuestro caso fue resuelto mediante la realización de una «Solución Limpia» y una reconstrucción de todo.
    • Que dos veces su respuesta ha salvado mi ocultar. Yo refactorizado mis clases y se trasladó el archivo EDMX. Mi Aplicación.config cadena de conexión fue actualizado pero mi transformación XML de la Aplicación.De liberación.config todavía tenía el antiguo espacio de nombres.
    • Mi caso: he cambiado el nombre de la modelo.edmx (VynilHouseModel.edmx a VinyHouseMode.edmx), y, estoy usando la app.de depuración.de configuración y aplicación.de liberación.config. Y, la aplicación nueva.config fue re-creado, pero no me he dado cuenta.
    • Gracias solucionado mi problema, yo también tuve la cadena de conexión problema.

  2. 348

    Este pequeño cambio de ayuda con este problema.

    Tengo la Solución con 3 proyecto.

    connectionString="metadata=res://*/Model.Project.csdl|res://*/Model.Project.ssdl|res://*/Model.Project.msl;

    cambio

    connectionString="metadata=res://*/;
    • Se fija para mí, pero ¿qué diablos significa?
    • Voy a explicar esto en detalle en esta entrada del blog
    • No, no funciona en muchos casos, y será lento en otras. Leer mi blog para entender por qué.
    • Se mudó a mi .edmx el Modelo de carpeta y se olvidó de la actualización de la cadena de conexión. Gran puntero. Gracias. Me han llevado horas de averiguar.
    • Usted señor ha guardado un pobre empleado de Microsoft desde muy cabreado consumidor.
    • gracias, me cambio el nombre de mi Modelo a Model1 en la web.config y es un trabajo!
    • Yo lo he hecho, y la identificación de resolver un problema, pero me da otra All artifacts loaded into an ItemCollection must have the same version. Multiple versions were encountered. – en el pasado para Npgsql. Sólo la ruta de acceso completa resuelto ambos.
    • debido a que esta solución no tiene sentido cuando tienes el mismo nombre de la clase bajo diferentes nombres. simplemente ignora el espacio de nombres
    • este truco solucionado mi problema, yo no recuerdo que he tenido este problema antes de unitl he leído esta solución, ahora estoy seguro de que no la voy a olvidar de nuevo
    • ‘No hay cadena de conexión llamado ‘xyz’ podría ser encontrado en el archivo de configuración de la aplicación.’
    • el enlace a su blog está roto
    • No puedo editar el comentario, pero he aquí un nuevo enlace.
    • Esto funcionó para mí en LinqPad 5 donde yo estaba recibiendo «MetadataException….»

  3. 113

    Usted puede obtener esta excepción cuando el Edmx es en un proyecto y usted lo está utilizando de otra.

    La razón es Res://*/ es un uri que apunta a los recursos en la ACTUAL asamblea. Si el Edm se define en un montaje diferente de la del código que se está utilizando, res://*/no va a funcionar porque no se encuentra el recurso.

    Lugar de especificar ‘*’, deberá proporcionar el nombre completo de la asamblea en su lugar (incluyendo el token de clave pública). Por ejemplo:

    res://YourDataAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=abcdefabcedf/YourEdmxFileName.csdl|res://...

    Una mejor manera de construir las cadenas de conexión es con EntityConnectionStringBuilder:

    public static string GetSqlCeConnectionString(string fileName)
    {
        var csBuilder = new EntityConnectionStringBuilder();
    
        csBuilder.Provider = "System.Data.SqlServerCe.3.5";
        csBuilder.ProviderConnectionString = string.Format("Data Source={0};", fileName);
    
        csBuilder.Metadata = string.Format("res://{0}/YourEdmxFileName.csdl|res://{0}/YourEdmxFileName.ssdl|res://{0}/YourEdmxFileName.msl", 
            typeof(YourObjectContextType).Assembly.FullName);
    
        return csBuilder.ToString();
    }
    
    public static string GetSqlConnectionString(string serverName, string databaseName)
    {
        SqlConnectionStringBuilder providerCs = new SqlConnectionStringBuilder();
    
        providerCs.DataSource = serverName;
        providerCs.InitialCatalog = databaseName;
        providerCs.IntegratedSecurity = true;
    
        var csBuilder = new EntityConnectionStringBuilder();
    
        csBuilder.Provider = "System.Data.SqlClient";
        csBuilder.ProviderConnectionString = providerCs.ToString();
    
        csBuilder.Metadata = string.Format("res://{0}/YourEdmxFileName.csdl|res://{0}/YourEdmxFileName.ssdl|res://{0}/YourEdmxFileName.msl",
            typeof(YourObjectContextType).Assembly.FullName);
    
        return csBuilder.ToString();
    }

    Si encuentra aún la excepción, abra la asamblea en el reflector y comprobar los nombres de los archivos para su .csdl, .ssdl y .msl archivos. Cuando los recursos tienen nombres diferentes a los especificados en el valor de metadatos, que no va a funcionar.

    • Por favor, considere que «YourEdmxFileName» debe ser el nombre completo por ejemplo, «YourNamespace.YourEdmxFileName», si el uso de espacios de nombres en su asamblea. Sin embargo, debe quitar la parte del espacio de nombres que es igual al nombre de la asamblea.
    • MSDN dice el segundo párrafo está mal. «Al utilizar el carácter comodín (*), Entity Framework tiene que mirar a través de todas las asambleas de los recursos con el nombre correcto.»
    • Estoy bastante seguro de que el espacio de nombres no es relevante, pero integrado en el ruta de acceso del archivo. Así que incluso si usted inspeccionar el *.El diseñador.cs archivo de los asociados archivo edmx y observe que la clase generada automáticamente el espacio de nombres es MyCompany…lo que sea, no es lo que usted debe utilizar. En lugar de que el camino es assemblyname, solución de carpeta(s) de los nombres o nombre de archivo. Por ejemplo: «metadata=res://*/EntityModels.<nombre de archivo>.csdl|» + «res://*/EntityModels.<nombre de archivo>.lscd|» + «res://*/EntityModels.<nombre de archivo>.msl;»
    • que todo correcto, pero tenga en cuenta que el espacio de nombres y el archivo incrustado camino a veces son la misma. Usted tiene que mirar con Reflector (o alternativa libre a) para estar seguro.
    • parece que funciona utilizando únicamente el nombre del ensamblado, sin versión, publickeytoken, etc. Como: res://MyAssembly/folder.<filename>.csdl...
    • Lo que confirma que @Craig Stuntz es correcta. El comodín funciona incluso cuando el EDMX se hace referencia en otra asamblea.

  4. 61

    Tuve un error similar. Yo había recreado el proyecto (una larga historia), y se tira todo lo de la vieja proyecto. No me había dado cuenta de que mi modelo había sido en un directorio llamado ‘Modelo’ de antes, y ahora estaba en un directorio llamado ‘Modelos’. Una vez que he cambiado la conexión en mi Web.Config de esto:

    <add name="RecipeManagerEntities" connectionString="metadata=res://*/Model.Recipe.csdl 

    a este:

    <add name="RecipeManagerEntities" connectionString="metadata=res://*/Models.Recipe.csdl

    Todo lo trabajado (cambiado Model a Models). Tenga en cuenta que he tenido que cambiar tres lugares en esta cadena.

    • Me mudé de mi modelo de Entity Framework, de Modelo a DAL. Pero luego, cuando me escribió una prueba (una semana después) en el proyecto de prueba para probar el Linq predicatebuilder. Tengo este error. He corregido el examen de los proyectos de App.config con cómo se veía en el proyecto principal de la web.config – como usted ha dicho en tres lugares. Por lo que su simple respondemos me puso en la pista.
    • Sí, gracias – revise su archivo(s). De alguna manera tenía el nombre antiguo.
    • Hay una diferencia entre los dos?!
    • Modelo vs Modelos
    • gracias. 🙂
    • Pensé que me había hecho el mismo de después de leer el blog de Craig, pero +1 para el aprendizaje es importante recordar que los cambios realizados en su «entidades» de la biblioteca de clases no son automágicamente hecho en los archivos de configuración de los proyectos que hacen referencia a él. /suspiro me Alegro de que no estoy solo.
    • gracias! este es trabajo para mí

  5. 25

    Y una manera rápida de comprobar el nombre del modelo sin Reflector…. busque el directorio

    …obj/{config salida}/edmxResourcesToEmbed

    y comprobar que el .csdl, .msl, y .ssdl los archivos de recursos de allí. Si están en un sub-directorio, el nombre de la sub-directorio debe ser antepuesto al nombre del modelo.

    Por ejemplo, mis tres archivos de recursos en un sub-directorio Datos, así que mi cadena de conexión tenía que ser

    metadatos=res://*/Datos.MyModel.csdl|res://*/Datos.MyModel.lscd|res://*/Datos.MyModel.msl;

    (frente a los metadatos=res://*/MyModel.csdl|res://*/MyModel.lscd|res://*/MyModel.msl;).

    • Esto fue EXACTAMENTE mi problema. Perdido varias horas en este. Muchas gracias por esta explicación fácil
    • Gran respuesta, en realidad se explica cómo encontrar lo que su cadena. Y muestra que las subcarpetas ‘.’ como delimitadores y no ‘\’ o ‘/’.
  6. 15

    También he tenido este problema y era porque el connectionstring en mi web.config era ligeramente diferente al de la aplicación.config de la asamblea, en donde mi EDMX se encuentra. Ni idea de por qué se ha cambiado, pero aquí hay dos versiones diferentes.

    De la aplicación.config:

    <add name="SCMSEntities" connectionString="metadata=res://*/Model.SMCSModel.csdl|res://*/Model.SMCSModel.ssdl|res://*/Model.SMCSModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=SANDIEGO\sql2008;initial catalog=SCMS;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

    Web.config:

    <add name="SCMSEntities" connectionString="metadata=res://*/Model.SCMSModel.csdl|res://*/Model.SCMSModel.ssdl|res://*/Model.SCMSModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=SANDIEGO\sql2008;initial catalog=SCMS;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

    Lo que fija era simplemente la copia de la aplicación.cadena de configuración (nótese la pequeña diferencia en la final en lugar de «App=EntityFramework» quería «application name=EntityFramework«) en la web.config y el problema se solucionó. 🙂

    • Gracias, de hecho ese era mi problema. Yo tenía 1 proyecto de access DB con los objetivos EF y otro proyecto de WCF. Después de cambiar el nombre del primer proyecto, el connectionString ha sido cambiado en la Aplicación.configuración de mi primer proyecto. Así que he tenido que cambiar la cadena de conexión en el proyecto de WCF también en la web.config 🙂
    • A partir de la documentación de MSDN sobre el docs.microsoft.com/en-us/dotnet/framework/data/adonet/…: The .NET Framework data provider for SQL Server (SqlClient) supports many keywords from older APIs, but is generally more flexible and accepts synonyms for many of the common connection string keywords. Entity Framework cadenas de conexión no comparten la flexibilidad, por lo que sólo debe utilizar las palabras clave que se espera.
  7. 12

    Esto me pasó a mí cuando me ha cambiado la Acción de Compilación del archivo edmx (aparece en Propiedades en el IDE) de ‘EntityDeploy’ a ‘None’. EntityDeploy es lo que rellena los metadatos para usted: ver http://msdn.microsoft.com/en-us/library/cc982037.aspx

    • Este fue mi fix – he cambiado el nombre de mi edmx a .viejo como yo lo copió y estaba tratando de un par de cosas, después cuando he cambiado el nombre de nuevo el Construir el conjunto de la Acción en sí a ninguno, y por lo tanto tiene este error, ajuste de nuevo a EntityDeploy resuelto mi problema 🙂
    • Yo me había mudado a mi EDMX archivo a otra carpeta y tuvo que cambiar la acción de compilación para obtener el recurso incrustado nombres para ser actualizadas. Gracias!
  8. 8

    Acabo de pasar una feliz 30 minutos con este. Me había cambiado el nombre de las entidades objeto, cambiado el nombre de la entrada en el archivo de configuración, pero hay más … hay que cambiar la referencia a la csdl así

    muy fácil perder – si vas a cambiar el nombre, asegúrese de obtener todo ….

  9. 6

    Yo tenía el mismo problema. Miré a mi cumplido archivo dll con reflector y he visto que el nombre del recurso no era la correcta. He cambiado el nombre y se ve bien ahora.

  10. 6

    Para mi caso es resuelto por un cambio de las propiedades de archivo edmx.

    1. Abrir el archivo edmx
    2. Clic derecho en cualquier lugar de la EDMX diseñador
    3. elija propiedades
    4. actualización Propiedad denominada «Procesamiento de Artefactos de Metadatos» para «Incrustar en la Salida de la Asamblea»

    esta resuelto el problema para mí.
    El problema es que, cuando el contenedor de tratar de encontrar la meta de datos, no puede encontrar. así que simplemente lo hacen en la misma asamblea.
    esta solución no funcionará si usted tiene su edmx archivos en otra asamblea

    • +1,000,000 este fue el problema subyacente para mí el día de hoy. Los dolores de la reorganización de un producto de espacios de nombres y la consolidación de las asambleas.
  11. 6

    Me pasé un día entero en este error

    si usted está trabajando con n-tear architecture

    o se trató de separate Models generado por EDMX forma DataAccessLayer a DomainModelLayer

    tal vez usted obtendrá este error

    1. Primer paso de solución de problemas es asegurarse de que la cadena de Conexión en webconfig (UILayer)y appconfig (DataAccessLayer) son los mismos
    2. Segundo, lo que es Muy importante la connection string

      connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provid.....

      cual es el problema

    desde donde en la tierra tengo Modelo lo que sea .csdl en mi cadena de conexión donde están

    aquí os nuestra solución vistazo a la imagen de

    MetadataException: no se puede cargar los metadatos especificados de recursos

    la esperanza de la ayuda que

  12. 6

    Esto me pasa a mí cuando yo no limpio solución antes de construir uno nuevo .edmx diseñador. Así que no te olvides de limpiar la solución antes de construir uno nuevo .edmx diseñador. Esto me ayuda a saltar mucho más problemas con esto. Abajo de la navegación de los detalles proporcionados en caso que usted es nuevo en visual studio.

    Haga clic en->Construir->Solución Limpia

    A continuación, haga Clic en->Construir->Reconstruir Solución

    Espero que esto ayude. Gracias a todos

  13. 5

    Fui capaz de resolver esto en Visual Studio 2010, VB.net (ASP.NET) 4.0.

    Durante la entidad asistente del modelo, usted será capaz de ver la entidad de la cadena de conexión. Desde allí se puede copiar y pegar en tu cadena de conexión.

    La única cosa que faltaba era el «App_Code.» en las conexiones de la cadena.

    entityBuilder.Metadata = "res://*/App_Code.Model.csdl|res://*/App_Code.Model.ssdl|res://*/App_Code.Model.msl"
    • Por desgracia, la cadena de conexión en el wizard no es la correcta para la aplicación.config. @leqid sugirió buena manera de arreglar el camino para el modelo.
  14. 4

    La solución definitiva (incluso después de volver a generar la base de datos en otros dos equipos, así como la EDMX y otros artículos diversos) era no utilizar la primera edición de Entity Framework. Mirando hacia adelante a evaluar de nuevo en .NET 4.0.

    Después de correr en el mismo problema de nuevo y buscando por toda respuesta, finalmente encontré a alguien que tenía el mismo problema. Parece que la cadena de conexión no estaba correctamente generado por Visual Studio asistente, y el enlace a los metadatos de los recursos faltaba un camino importante.

    v1.0 BUG?: No se puede cargar los metadatos especificados de los recursos. Los Scripts != Modelos

    Actualización 2013-01-16: después de Haber hecho la transición a la casi exclusivamente utilizando EF Code First prácticas (incluso con las bases de datos existentes) este problema no es un problema. Para mí, que era una solución viable para reducir el desorden de auto-generado el código y la configuración y el aumento de mi propio control sobre el producto.

  15. 4

    Mi problema y la solución, los síntomas eran los mismos «no se puede cargar los metadatos especificados de recursos», pero la causa era diferente. Tuve 2 proyectos en la solución de uno de ellos fue el EntityModel y el otro la solución. De hecho, me elimina y vuelve a crear el archivo EDMX en el EntityModel.

    La solución fue que me tuve que ir de nuevo a la Aplicación Web del proyecto y añadir esta línea en el archivo de configuración. El nuevo modelo había cambiado un par de artículos que tenía que ser duplicado en los «otros» Web del proyecto.Archivo de configuración. La configuración anterior no fue buena.

         <add name="MyEntities"
         connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;
                        provider=System.Data.SqlClient;
                        provider connection string=&quot;
                        data source=Q\DEV15;initial catalog=whatever;
                        user id=myuserid;password=mypassword;
                        multipleactiveresultsets=True;
                        application name=EntityFramework&quot;"
         providerName="System.Data.EntityClient" />
    • la solución para mí. gracias
  16. 4

    Después de horas de búsqueda en google y tratando de resolver ninguna de las soluciones propuestas trabajadas. Tengo un listado de varios solución aquí. También he notado el único que funcionó para mí. (Yo estaba usando EF versión 6.1.1, y SQL server 2014 – pero una mayor DB)

    1. La reconstrucción del proyecto y tratar de nuevo.
    2. Cerrar y abrir VS – no sé cómo funciona esto
    3. asegúrese de que si usted ha colocado el .EDMX archivo dentro de un Directorio, asegúrese de incluir los Directorios en su ConnectionString. por ejemplo la mía es dentro DAL carpeta. Por LO que se ve como esto: connectionString="metadata=res://*/DAL.nameModel.csdl|res://*/DAL.nameModel.ssdl|res://*/DAL.nameModel.msl;(estos son los archivos. a ver que les puede alternar Mostrar Todos los Archivos en el explorador de soluciones, en ~/obj/directorio..)

    …y muchos más de los que yo había intentado [como: revertir la EntityFramework versión a una versión posterior(no estoy seguro de ello)]


    lo que funcionó para mí:

    de este el artículo aquí, me ayudó a resolver mi problema. Acabo de cambiar mi ProviderManifestToken="2012" a ProviderManifestToken="2008" en el archivo EDMX. Para hacer esto:

    El Explorador De Soluciones

    1. Haga clic derecho sobre el archivo .edmx
    2. Abrir con..
    3. Editor de XML
    4. Cambio ProviderManifestToken=»XXXX» con 2008

    Espero que le ayude.

    • Hace poco tuve un problema después de hacer aparentemente no hay cambios. Trató de reiniciar VS vano, pero luego se fue fijado por la limpieza y la reconstrucción. Así, para los demás, si no se realizó ningún cambio y no el resto de este parece pertinente, entonces, dar una limpia/reconstruir una oportunidad.
  17. 3

    En mi caso, este problema estaba relacionado con el cambio de nombre de mi modelo del archivo edmx… la corrección de la aplicación.config cadena de conexión para la csdl/lscd/msl archivos solucionado mi problema.

    Si usted está utilizando el EF 4.0 diseñador para generar su csdl/lscd/msl, estos 3 «archivos» en realidad serán almacenados en el modelo del principal archivo edmx. En este caso, el post de Waqas es bastante mucho en la marca. Es importante entender que «Model_Name» en su ejemplo será necesario cambiar a cualquiera que sea el nombre actual de su modelo .archivo edmx (sin el .edmx).

    También, si su archivo edmx no es a nivel de la raíz de su proyecto, usted necesita escribir el prólogo de Model_Name con la ruta de acceso relativa, por ejemplo,

    res://*/MyModel.WidgetModel.csdl|res://*/MyModel.WidgetModel.ssdl|res://*/MyModel.WidgetModel.msl

    tendría que especificar el csdl/lscd/msl xml se almacenan en el archivo de modelo de ‘WidgetModel.edmx’, que se almacena en una carpeta llamada «MyModel’.

  18. 3

    He escrito esta clase auxiliar para crear instancias de ObjectContext los objetos cuando están definidos en un proyecto diferente que el proyecto de usarlo. Analizar la cadena de conexión en el archivo de configuración y reemplazar ‘*’ por el pleno de la asamblea nombre.

    No es perfecto, ya que utiliza la reflexión para construir el objeto, pero es el más genérico forma de hacerlo que he podido encontrar.

    Espero que ayude a alguien.

    public static class EntityHelper<T> where T : ObjectContext
    {
        public static T CreateInstance()
        {
            //get the connection string from config file
            string connectionString = ConfigurationManager.ConnectionStrings[typeof(T).Name].ConnectionString;
    
            //parse the connection string
            var csBuilder = new EntityConnectionStringBuilder(connectionString);
    
            //replace * by the full name of the containing assembly
            csBuilder.Metadata = csBuilder.Metadata.Replace(
                "res://*/",
                string.Format("res://{0}/", typeof(T).Assembly.FullName));
    
            //return the object
            return Activator.CreateInstance(typeof(T), csBuilder.ToString()) as T;
        }
    }
  19. 3

    Para todos ustedes SelftrackingEntities los Usuarios ,
    si usted ha seguido los de Microsoft a Pie-a través de y se separan del contexto del Objeto de la clase en
    el proyecto de servicio wcf (mediante la vinculación con el contexto .tt) por lo que esta respuesta es para ti :

    parte de la muestra las respuestas en este post que incluye un código como :

    ... = string.Format("res://{0}/YourEdmxFileName.csdl|res://{0}/YourEdmxFileName.ssdl|res://{0}/YourEdmxFileName.msl", 
            typeof(YourObjectContextType).Assembly.FullName); 

    NO VA A TRABAJAR PARA USTED !! la razón es que YourObjectContextType.Assembly ahora reside en diferentes Assembley (dentro de la wcf proyecto de la asamblea) ,

    Así debe reemplazar YourObjectContextType.Assembly.FullName con –>

    ClassTypeThatResidesInEdmProject.Assembly.FullName 

    divertirse.

  20. 2

    Yo estaba teniendo problemas con este mismo mensaje de error. Mi problema fue resuelto por cerrar y volver a abrir el Visual Studio 2010.

  21. 2

    Tenido el mismo problema porque me cambia el nombre a una asamblea.

    Tuve que cambiar también en AssemblyTitle y AssemblyProduct atributos en las Propiedades del proyecto/AssemblyInfo.cs, y también eliminar y volver a agregar la referencia al archivo edmx.

    A continuación, trabajó muy bien.

  22. 2

    Con tener el mismo problema que yo re-creado edmx de la Base de datos.
    Soluciona mi problema.

    • Por desgracia, que aborda y trata el síntoma, no la causa.
  23. 2

    Excepción es porque el compilador apunta a que no existe Metadatos tan solo Copiar app.config connectionstring para Web.config ConnectionString

  24. 2

    Si usted está utilizando el edmx de un proyecto diferente, en la cadena de conexión, cambio…

    metadata=res://*/Data.DataModel.csdl

    …a…

    metadata=res://*/DataModel.csdl
    • Esto es cierto, Si usted quiere mover a su nuevo proyecto sub carpeta, usted necesita agregar el folder.subfolder antes.
  25. 1

    También tuve el mismo problema y la solución, como por Rick, salvo que yo era la importación de una existente .edmx a un nuevo proyecto, y aunque la base de espacio de nombres no importaba que fue importado en otro subdirectorio así que también tuve que actualizar la cadena de conexión en el interior de la Web.Config en tres lugares, para incluir a los diferentes subdirectorio de nomenclatura:

  26. 1

    Tuve el mismo problema con una solución que contenía los proyectos en una Carpeta de la Solución, cuando se trasladó a la Raíz de la Solución (en orden a superar la sospecha de un error con el Mvc3AppConverter debido a la localización del proyecto).

    Aunque la solución compilado después de todo* referencias del proyecto fueron re-agregado como sea necesario, el error se produce cuando el sitio web fue despedido.

    La EDMX en uno de los proyectos que se trasladó (‘Data’ en el proyecto), pero, por supuesto, la falta de una referencia a los Datos del proyecto no causa un error de compilación, sólo un error en tiempo de ejecución.

    Simplemente agregando la falta de referencia a la primaria proyecto resuelto este problema, no hay necesidad de editar la conexión.

    Espero que esto ayude a alguien más.

  27. 1

    Una mala aplicación.config o web.fichero de configuración puede hacer esto.. yo había copiado de la aplicación.config cadena de conexión a mi web.config en mi interfaz de usuario y terminó entrando en:

    <connectionStrings>
        <connectionStrings>
              <add name="name" connectionString="normalDetails"/>
        </connectionStrings>
    </connectionStrings>
  28. 1

    Yo simplemente no había referencia a mi clase de la biblioteca que contiene el archivo EDMX.

    • Esto realmente ayudó a mi caso en particular, gracias @PeterX.
  29. 1

    A veces me aparece este error en mi proyecto. Voy a resolver que por

    1 – clic Derecho en el archivo EDMX

    2 – Seleccione Run Custom Tool opción

    3 – proyecto de Reconstrucción

    • Esto funcionó para mí, pero yo también tenía que reconstruir después
  30. 0

    Mi teoría es que si usted tiene más de un archivo edmx con el mismo nombre (Model1 por ejemplo), le dará a esa excepción.
    Tengo el mismo problema cuando me decidí a nombre de todos mis edmx archivos (sentado en diferentes proyectos) como Model1 porque pensé que deberían ser independientes.

  31. 0

    Otra causa de esta excepción es cuando se incluye una tabla relacionada en un ObjectQuery, pero el tipo equivocado de navegación nombre de la propiedad.

    Ejemplo:

    var query = (from x in myDbObjectContext.Table1.Include("FKTableSpelledWrong") select x);
  32. 0

    A veces el ensamblado que contiene el modelo no está cargado:

        [TestMethod]
        public void TestOpenWithConfigurationAfterExplicit()
        {
            String dummy = typeof(MallApp).Assembly.FullName;  
            //force the assembly loaded.
            using (DbContext ctx = new DbContext("name=MyContainer))
            {
            }
        }

    El tipo MallApp vive en la misma asamblea como el modelo de entidad. Sin la carga explícita, una System.Data.MetadataException será lanzado.

  33. 0

    Como para mí, me había separado Capa de Acceso a Datos y la capa de Interfaz de Usuario.
    Así que he entidad de la cadena de conexión para cada capa.

    Antes de modificar estas dos separados cadenas de conexión a ser la misma, me encontré con que debajo de error.

    Unable to load the specified metadata resource

    Así que hacer para ser el mismo de las cadenas de conexión para esas dos capas (DAL , interfaz de usuario), Es el trabajo perfecto.

    Mi solución es hacer que toda la cadena de conexión a ser el mismo, no importa donde ya presentó.

  34. 0

    Cuando llegué a los metadatos problema solucionado, he tenido un problema en la forma de una llamada excepción incapaz de encontrar una cadena de conexión para XXXEntities en la aplicación.config (donde mi objetivo era no depende de la aplicación.config). A través de pura suerte me encontré con que Sistema de referencia.Los datos de mi proyecto de prueba de unidad aclarado este último obstáculo. Así que, resumiendo:

    1. Uso de nuget para instalar Entity Framework para su proyecto de prueba de unidad.
    2. Asegurar El Sistema.De datos.De la entidad y del Sistema.Los datos se hace referencia.
    3. Ordenar su cadena de conexión como se describe muy bien aquí.
    4. Pasar la cadena de conexión para su parcial constructor de la clase.

    Ahora tengo mi metadatos en una biblioteca de clases que se puede actualizar desde una referencia db, y puedo señalar mi solicitud y pruebas de unidad a cualquier base de datos en cualquier servidor en tiempo de ejecución.

    Adición: Cuando me mudé a mi edmx a una carpeta, yo tengo el error de nuevo. Después de un poco de investigación, me encontré con que desea que sus metadatos cadena de aspecto: metadatos=res://EPM.DAL/Modelos.EPM.csdl, donde EPM.DAL es el nombre de la asamblea y EPM.edmx está en la carpeta modelos.

  35. 0

    Similar problema para mí. Mi nombre de clase era diferente a mi nombre de archivo. El connectionstring generados tenía el nombre de la clase y no el nombre de archivo. La solución para mí era sólo para cambiar el nombre de mi archivo para que coincida con el nombre de la clase.

  36. 0

    He tenido este problema ayer y estaba mirando mi código en la depuración y la salida desde el Analizador de SQL.

    Lo que yo no podía entender, antes de leer y comprender este post, fue el motivo de EntityFramework estaba tirando este error fue llamar a la DB. Yo estaba mirando a través de cientos de líneas en el Analizador de SQL tratando de averiguar lo que estaba mal con el modelo de base de datos. No pude encontrar nada parecido a la llamada que estaba esperando, y para ser honesto, no estaba seguro de lo que yo estaba buscando.

    Si usted está en esta posición, comprobar la cadena de conexión. Mi conjetura es que antes de EntityFramework crea sus SQL que se revise el modelo especificado en los metadatos parte de la cadena de conexión. En mi caso fue mal. EntityFramework aún no estaba haciendo tan lejos de la DB.

    Asegúrese de que los nombres son correctos. Una vez que hube resuelto, luego fui viendo llamadas en el Analizador de SQL donde el ApplicationName fue ‘EntityFramework’ con SQL llamar a la espera de las tablas.

  37. 0

    El uso de la información de esta publicación de blog:

    Como otros han dicho, res:\\ es un puntero a sus recursos. Verificar y asegurarse de que su recurso nombres son correctos puedes utilizar un descompilador como DotPeek por JetBrains para abrir tu .archivo dll y ver sus archivos de Recursos.

    O usted podría abrir la ventana de inspección mientras estés en modo de depuración y pegar en este código para obtener un array con los nombres de los recursos en el que se está ejecutando actualmente asamblea.

    System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames()

    Que se dice, el formato de metadatos rutas de acceso debería ser algo como:

    {mi-asamblea-nombre}/{posiblemente-un-espacio de nombres}.{nombre de clase}.{csdl o ssdl o msl}

  38. 0

    Tengo este error cuando mi emdx archivo fue eliminado por un comando anterior a la compilación, simplemente. Me tomó un tiempo antes de darse cuenta de que era así de simple.

  39. 0

    Simplemente escriba la ruta de acceso de la siguiente manera, en lugar de {Path.A.El.}: res:///{Path.To.The.}YourEdmxFileName.csdl|res:///{Path.To.The.}YourEdmxFileName.ssdl|res://*/{Path.To.The.}YourEdmxFileName.msl

  40. 0

    En mi caso esto era porque yo era la construcción de la cadena de conexión usando un EntityConnectionStringBuilder. Asegúrese de que su propiedad de Metadatos está utilizando el nombre del Modelo (incluyendo el espacio de nombres)

  41. 0

    Tengo este problema, después de mover una gran solución de una carpeta en el Explorador de Control de código Fuente a otra. No podemos comprobar la carpeta de paquete en el Equipo de la Fundación, y así creo que VS paquetes descargados automáticamente. Esta actualizado mi EF forma v6.1.2 v6.1.3.

    El problema fue cuando me rebajó a la original v6.1.2.

  42. 0

    En mi caso ninguna de las respuestas aparecen trabajado y lo voy a postear esto.

    Para mi caso, edificio en Visual studio y se ejecuta con IIS express ha funcionado muy bien. Pero cuando yo era implementación mediante el uso de scripts de Nant como un stand-alone sitio web fue dando errores. He probado todas las sugerencias anteriores y entonces se dio cuenta de la DLL que se ha generado por la nant guión fue mucho menor que el generado por VS. Y entonces me di cuenta de que Nant era incapaz de encontrar el .csdl, .msl y .ssdl archivos. Así que en realidad hay dos formas de solucionar este problema, uno es copiar los archivos necesarios después de visual studio genera ellos e incluir estos archivos en la construcción de la implementación. Y, a continuación, en la Web.configuración, especifique la vía de acceso como:

    "metadata=~/bin/MyDbContext.csdl|~/bin/MyDbContext.ssdl|~/bin/MyDbContext.msl;provider=System.Data.SqlClient;...."

    Esto es suponiendo que usted tiene que copiar manualmente los archivos en el directorio bin de la página web que se está ejecutando. Si es en un directorio diferente, a continuación, modificar la ruta en consecuencia.
    Segundo método es ejecutar EdmGen.exe en Nant script y generar los archivos y, a continuación, incluir como recursos, como se hace en el siguiente ejemplo:
    https://github.com/qwer/budget/blob/master/nant.build

Dejar respuesta

Please enter your comment!
Please enter your name here