c# - studio - mysql connector odbc
.NET MySQL Connector Conflicting DbProviderFactories (2)
También puede considerar copiar todas las DLL de mysql de C:/Program Files (x86)/MySQL/MySQL Connector Net 6.8.3/Assemblies/v4.0
en la carpeta bin de su proyecto. De esa manera, EF6 puede alcanzar todas las subclases de conector MySQL (MySql.Data) requeridas.
Estoy utilizando el .NET MySQL Connector con Entity Framework 4, y todo funcionó muy bien, pero quería empaquetar los archivos DLL del cliente MySQL con mi aplicación cuando se implementa en los servidores para que no tengamos que preocuparnos por instalar mysql en cada servidor. Cada aplicación solo tendrá la copia correcta que necesita.
Para hacer esto posible, me aseguré de que las referencias de MySQL tuvieran "Copia local" establecida para que se copiaran en las carpetas de la papelera y agregaran lo siguiente a mi app.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.3.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
Esto funciona y puedo implementar la aplicación sin instalar mysql en el servidor remoto, pero ahora tengo un problema en mi máquina de desarrollo local (donde tengo instalado el conector MySQL), y recibo este error cuando EF intenta para conectar:
La columna ''InvariantName'' está restringida para ser única. El valor ''MySql.Data.MySqlClient'' ya está presente.
Si comento el XML que agregué arriba en el archivo app.config, el error desaparece. Esto es probable porque el mismo controlador está instalado en el sistema y está en el archivo machine.config.
¿Cuál es la solución? Preferiría no tener que comentar y descomentar manualmente la línea según el sistema para el que compile la aplicación.
intente agregar <eliminar invariant = "MySql.Data.MySqlClient" /> en su configuración web. En su computadora, ha instalado el Connector for MySql y su machine.config ha sido modificado agregando un elemento en las Fábricas de DbProvider. Por lo tanto, si coloca otro proveedor de datos MySql en su web.config, es como si intentara registrar lo mismo dos veces.
<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, Version=6.3.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>