válido unable the specified resource referencia reciente pueden puede pudo proyecto proveedor miembro metadatos metadataexception mas los invocado hace framework especificados especificado ensamblado encuentra encontrar dinámico datos data configuración compatible cargar archivos archivo almacenamiento admite c# entity-framework entity-framework-6

c# - unable - Entity Framework: no se puede cargar el recurso de metadatos especificado



no se pueden cargar los metadatos (16)

Si está utilizando la CLI de dotnet

Para los visitantes más nuevos que utilizan las nuevas herramientas de dotnet build dotnet para construir proyectos basados ​​en Entity Framework 6.x, sepa que actualmente NO incluye ningún metadato en la compilación final. Entonces, si ejecuta desde VS, se ejecutará, pero si sus scripts de CI usan dotnet , fallarán en el servidor hasta que vuelva a cambiar a msbuild . En mi humilde opinión, esto es un error y las herramientas deben manejar esto. Puede hacer sonar el hilo de GitHub si es necesario.

Me doy cuenta de que esto se me ha pedido varias veces, pero parece que no puedo entender el problema. Me sale la siguiente pila de error:

Cuando refleje mi dll puedo ver lo siguiente

Leyendo http://blogs.teamb.com/craigstuntz/2010/08/13/38628/ sugiere que esperaría ver los archivos csdl, msl y ssdl aquí, pero no lo son. Sin embargo, existen aquí obj / Debug / edmxResourcesToEmbed.

Sin embargo, intenté decirle explícitamente a web.config dónde buscar haciendo esto:

...connectionString="metadata=res://DllName.dll/PaymentModel.csdl|res://DllName.dll/PaymentModel.ssdl|res://DllName.dll/PaymentModel.msl;provider=System.Data.SqlClient;provider ... />

Lo que acaba de lanzar un error diciendo que no puede encontrar la dll:

No se puede resolver el ensamblado ''DllName.dll''.

Muy similar a esta pregunta SO no resuelta. No se puede resolver el ensamblado Model.dll

Lo último que intenté fue cambiar la línea de metadatos a:

...connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider ... />

Esto arrojó un mensaje sobre sql ce que no estoy usando. ¿Hay alguna forma de solucionar esto?

¿Hay algo más que pueda probar? ¿O puede alguien ver dónde me equivoco? Algunos detalles adicionales:

  • Uso de EF 6 EDMX establecido en "Recurso incrustado"

  • Copiar en el directorio de salida: "No copiar"

  • Procesamiento de artefactos de metadatos: "Incrustar en ensamblaje de salida"

Finalmente en esto, si configuro el EDMX de Recurso incrustado en EntityDeploy, esto funcionará localmente pero no se construirá en el servidor de compilación, ya que produce exactamente el mismo error que esta pregunta SO:

No se pudo encontrar el nodo de esquema conceptual para incrustar como un recurso para el archivo de entrada

Pero la solución no parece ayudar y desafortunadamente no puedo instalar .NET 4.5 en el servidor.


Además, tenga en cuenta que cuando mueva el archivo edmx de, por ejemplo, una aplicación web a una capa de datos (web.config - connection / app.config - connection), cambia la cadena de conexión en la capa de datos Y la capa de servicio web. (de lo contrario, uno usa dos cadenas de conexión diferentes, y esto causa tal problema)


Así que he llegado al fondo de esto, en parte creo que fue mi culpa. Pondré soluciones a cada problema que encontré a continuación en caso de que ayude a alguien más.

No se puede cargar el problema del recurso de metadatos especificado

Esto se debió a que configuré la configuración ''Procesamiento de artefactos de metadatos'' en el modelo edmx de "EntityDeploy" a "Embedded Resouce".

Así que esto significa que simplemente incrustó todo el archivo edmx en la dll y no generó los archivos ssdl, msl y csdl en su lugar.

Supongo que debe configurar esto en EntityDeploy para que esto funcione y genere estos archivos correctamente. Tiene mucho sentido y nuestro mal aquí.

No se puede resolver el ensamblado ''DllName.dll''

Esto fue resuelto por Andrew en los comentarios anteriores, gracias por el indicador al respecto.

No se pudo encontrar el nodo de esquema conceptual para incrustar como un recurso para el archivo de entrada

La clave de todo este problema realmente es esta: nuestro servidor de compilación está actualmente en Windows 2003, por lo que no puede tener instalado .NET 4.5, localmente estábamos usando EF 6.1 ejecutándose bajo .NET 4.0 en VS2013.

Sin embargo, por alguna razón, parece que necesitamos tener instalado .NET 4.5 en nuestro servidor de compilación para que esto se construya, a pesar de que no estamos usando ninguna de las características 4.5 y nos dirigimos al marco .NET 4.

Reducir la calificación a EF a 4.3 resolvió este problema para nosotros en el corto plazo. No ideal pero funcionó.


Cambiar los metadatos

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

A

connectionString="metadata=res://*/;

El cambio anterior solucionará el problema.


De hecho, recibí este error idéntico porque la cadena de conexión de Entity Framework estaba apuntando a una base de datos válida , sin embargo, era la base de datos incorrecta .

Si tiene las siguientes instancias en SQL Server:

  • MyDatabase1
  • MyDatabase2

Asegúrese de que la cadena de conexión apunta a la misma base de datos a la que está conectado el .EDMX y desde donde se generó. Parece bastante obvio, pero al copiar la configuración de la conexión EF de 1 proyecto a otro, se cometió un error y el resultado final fue el mensaje de " Unable to load the specified metadata resource ". Una vez que usé la cadena de conexión correcta que apunta a la base de datos y el ensamblaje correctos, se resolvió el error.

Lo más fácil es tomar la cadena de conexión original creada en el archivo .config que se encuentra junto al .EDMX y copiar donde sea necesario para asegurarse de que no se cometan omisiones / errores sutiles o menores, lo que hace que EF no se cargue / conecte correctamente.


Estaba recibiendo el mismo error. Mi cadena de conexión era la siguiente

<add name="EmployeeDbContext" connectionString="metadata=res://*/EmployeeModel.csdl|res://*/EmployeeModel.ssdl|res://*/EmployeeModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;initial catalog=Sample;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

Lo cambié a seguir y solucioné el problema.

<add name="EmployeeDbContext" connectionString="server=.; database=Sample; integrated security=true;" providerName="System.Data.SqlClient"/>


Estoy compartiendo mi código con otro desarrollador y tuvo este problema. No hay diferencias en las cadenas de conexión. Todos los archivos OK ... Lo arreglé configurando

  • Procesamiento de artefactos de metadatos desde: "Incrustar en el ensamblaje de salida" a "Copiar en el directorio de salida",
  • reconstruyendo el proyecto,
  • y luego volver a ponerlo de nuevo.

Esto funcionó, supongo, porque los archivos individuales (archivos CSDL / MSL / SSDL) se crearon en el directorio de salida cuando usaba "copiar en el directorio de salida". Aparentemente había un error que los requería para que la versión incrustada funcionara. Espero que esto ayude :)


He golpeado esto varias veces al moverme entre las máquinas de desarrollo después de bajar el código del control de fuente. Por lo general, solo tengo que reconstruir explícitamente el proyecto con el archivo EDMX.


He tenido el mismo problema. Después de mover el archivo .edmx con el modelo EF a un ensamblaje separado, el error mencionado causó mi dolor de cabeza: "No se puede cargar el recurso de metadatos especificado".

EF versión 6.1

Solución:

Valor antiguo:

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

Nuevo valor:

metadata=res://*/DataModel.csdl

Inicialmente .edmx estaba en la carpeta del proyecto y lo he movido a la raíz del proyecto.


He usado EF6 en mi estudio visual 2013. Resolví esto haciendo los siguientes pasos.

  • Clic derecho en el modelo de entidad.
  • Abrir con el editor de XML (texto)
  • en conjunto de etiquetas ProviderManifestToken="2008"
  • construir solución

Espero que funcione para ti..


La cadena de conexión "metadata = res" debe ser la misma que el nombre de Edmx. p.ej

metadata=res://*/EmployeeModel.csdl

este nombre EDMX debe ser EmployeeModel


Me topé con este problema y me ha mordido muchas, muchas, muchas veces y siempre olvido cómo lo arreglo.

Todo lo que tenía que hacer es establecer el default.aspx como la página de inicio.

Obviamente, esto no ayudará a todos, pero en mi caso he seguido el camino de verificar mi configuración, la cadena de conexión ...

Espero que esto ayude a alguien, o al menos la próxima vez que lo busque en Google, encontraré mi solución. :)


Quiero compartir mi experiencia sobre esto y cómo lo resolví . En mi caso, sucede porque copié y pegué mi cadena de conexión en el servidor de producción . Mi aplicación estaba usando Entity Framework .

El problema estaba en los metadatos

Nombré a mi modelo de entidad como ''BetModel'' pero en mi cadena de conexión estaba usando ''Entity'' - ''res: // /Entity.csdl|res:// /Entity.ssdl|res://*/Entity.msl'' en ''metadatos'' (la razón fue porque copié lo pegué).

Así que mi ConnectionString equivocada fue:

connectionString="metadata=res://*/Entity.csdl|res://*/Entity.ssdl|res://*/Entity.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=;initial catalog=;persist security info=True;user id=;password=;MultipleActiveResultSets=True;App=EntityFramework&quot;"

y la ConnectionString corregida era:

<add name="BetEntities" connectionString="metadata=res://*/BetModel.csdl|res://*/BetModel.ssdl|res://*/BetModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=;initial catalog=;persist security info=True;user id=;password=;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />


Solución:
1) Abra el archivo .edmx de Visual Studio.
2) Haga clic en cualquier lugar.
3) Debería ver la ventana de propiedades de edmx.
4) Cambie el espacio de nombres al nombre correcto de la carpeta.
5) 1 : 1 (seleccione la imagen para obtener más detalles).


Yo estaba teniendo el mismo problema

System.Data.MetadataException: no se puede cargar el recurso de metadatos especificado

Resultó que la cadena de conexión que se generó anteriormente tenía todo el nombre de edmx. Saqué todos los nombres de modelos de la cadena de conexión dejando solo la siguiente cadena en mis metadatos

"metadata=res://*/;provider=System.Data.SqlClient;provider

Esto funcionó para mí.


debe especificar el nombre completo del ensamblaje y una ruta al archivo de modelo dentro de él (separados por / ), no el nombre dll

connectionString="metadata=res://Name.Of.The.Assembly, Culture=neutral, PublicKeyToken=8e2e51fcf4cf363e/Payment.PaymentModel.csdl|.........."

lo mismo para ssdl y ssdl