2012-01-02 44 views
10

He escrito un ensamblaje en C# para realizar todo el acceso a datos para una base de datos MySQL. He utilizado con éxito el ensamblado (un dll compilado) en mi aplicación de escritorio C# winform. Pero solo funciona en PC que tengan instalado "MySQL Connector Net 6.4.4".MySQL Entity Framework Error - El proveedor de tienda especificado no se puede encontrar en la configuración, o no es válido

He intentado utilizar el mismo conjunto con mi proyecto de sitio web asp.net. En primer lugar, recibí un error sobre una cadena de conexión faltante. Esto se solucionó fácilmente agregando la cadena de conexión MySQL al archivo web.config. Ahora obtengo este error (el seguimiento de la pila se detalla a continuación), intenté agregar los siguientes dlls a mi carpeta bin para resolverlo, pero no funcionó.

MySql.Data.dll 
MySql.Data.Entity.dll 
MySql.Web.dll 

System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. 
---> System.ArgumentException: The specified store provider cannot be found in the configuration, or is not valid. 
---> System.ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed. at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) at System.Data.EntityClient.EntityConnection.GetFactory(String providerString) 
--- End of inner exception stack trace 
+0

¿La cadena de conexión tienen la providerName = "System.Data Atributo .EntityClient "en él? – GemCer

+0

Sí, acabo de verificar para estar seguro. – Hoody

Respuesta

32

Pero sólo funciona con PC que han tenido el "MySQL Connector Net 6.4.4" instalado.

¿Significa que está intentando ejecutar su código en la máquina donde el proveedor no está instalado? En tal caso, también debe registrar el proveedor en su archivo de configuración porque la instalación lo agrega a machine.config y si no lo instaló, actualmente el proveedor no está registrado.

intenta agregar esto a su archivo web.config:

<system.data> 
    <DbProviderFactories> 
    <add name="MySQL Data Provider" 
     invariant="MySql.Data.MySqlClient" 
     description=".Net Framework Data Provider for MySQL" 
     type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 
    </DbProviderFactories> 
</system.data> 
+1

Gracias, intentaré esto esta noche. Para referencia futura, ¿cuál es la forma más fácil de calcular exactamente qué necesita agregarse al archivo de configuración en este tipo de escenarios? – Hoody

+0

Esto funciona, gracias de nuevo. – Hoody

+3

Tuve que eliminar "Version = 6.4.4.0, Culture = neutral ..." aunque mi MySql.Data.dll coincidía exactamente con esas características (según IL Spy) – Pakman

6

descubrí que tenía este problema también cuando se utiliza el conector independiente .NET 6.6.5 instalador.

Para resolver, simplemente desinstale el instalador del conector .NET independiente, e instale el instalador mysql-community-installer, este instalador le permite agregar/eliminar características a MySQL, y en él una de las características es el conector .NET que tiene Soporte de Entity Framework.

Una vez que utiliza este conector, todos sus problemas con MySQL EF desaparecen.

+2

yup! esto lo arregló! –

+0

tenía un problema con el instalador de la comunidad MySQL en el sentido de que la descarga para el estudio visual no dejaba de funcionar.Resolvió esto descargando el instalador completo de 180 mb en lugar del de 1.5 mb. Lo anterior luego arregló esto. – Knightsy

+0

@Greg .... Esto funcionó por completo !!!!!! Estuve en este tema durante casi 2 horas y la solución fue desinstalar el conector independiente (en mi caso fue proporcionado por Oracle ...) – atp9

0

Tuve este error (estaba usando .net connector 6.4.3) después de desinstalar todos los .NET frameworks y volver a instalarlos. La solución fue desinstalar e instalar 6.4.3 6.6.5

3

Añadir esto en web.config

<system.data> 
    <DbProviderFactories> 
     <remove invariant="MySql.Data.MySqlClient" /> 
     <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data" /> 
    </DbProviderFactories> 
    </system.data> 
2

Para las personas que llegan a esta vieja pregunta a través de Google como lo hice:

También obtendrá este error si actualiza a MySQL para Visual Studio 1.1.3, que es la primera versión compatible con Visual Studio 2013, pero aún usa MySQL Connector 6.6.6, que hasta donde sé es la última versión que era compatible con Entity Framework 4.3.1.

Sabíamos que teníamos que actualizar a EF5 (o 6) lo antes posible, pero ahora esto está forzando el cambio sobre nosotros en un momento muy incómodo ...

Cuestiones relacionadas