Can't use a MySQL connection for entity framework 6
LATEST EDIT
The bug has been fixed.
Chris' comment:
2015-11-07 and you can now get it all working without editing any files or doing weird stuff. Use the MySQL for Windows installer and include the Visual Studio support and the latest Connector.Net. Be sure to update after installing and you will get the latest of each (1.2.5 and 6.9.8). Use NuGet to install EntityFramework, MySql.Data, and MySql.Data.Entity. Finally, built and enjoy code-first reverse engineering goodness by adding an Ado.Net Entity Model.
Original answer
I found out it's a bug from MySQL.
Here's the link explaining a workarround.
On your machine where VS 2013 is installed, VS plugin (1.1.3 GA) and Connector/Net
Close all VS instances before doing the steps.
On a Windows Explorer window go to this path or wherever you installed you Connector/net binaries
C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.3\Assemblies\v4.5\
Copy the file:
MySql.Data.Entity.EF6.dll
And paste it to this folder
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies
If it asks you to overwrite it please do so.
You'll need admin rights in order to overwrite the file.
Then you can try again to generate the script for your model.
It is important that you have the 1.1.3 version of the VS plugin installed since this workaround is for that.
Unfortunately it doesn't work for me, so I downgraded to entity framework 5 until they fix this.
EDIT
Finaly, it works now.
I had to add the 3 following DLLs :
- C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.3\Assemblies\v4.5\MySql.Data.dll
- C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.3\Assemblies\v4.5\MySql.Data.Entity.EF6.dll
- C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.3\Assemblies\v4.5\MySql.Web.dll
Then I changed the EntityFramework part in the web config to :
<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
</providers>
</entityFramework>
Don't forget to REBUILD and you should be able to create a entity framework 6 model with MySQL.
IMPORTANT
Make sure you have installed MySQL for visual studio 1.1.3 and MySQL connector .net 6.8.3
Solution in 2017
Install Nuget Package:
Install-Package EntityFramework
Install-Package MySql.Data.Entity -Version 6.9.9
Install MySQL for Visual Studio 1.2.6 - https://dev.mysql.com/downloads/windows/visualstudio/
Changes in Web.Config
<EntityFramework>
to:
<EntityFramework codeConfigurationType = "MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
Add (** your information **):
<connectionStrings>
<add name="**YourContextName**" connectionString="server=**xxx.xxx.xxx.xxx**;port=3306;user id=**your user**;password=**your password**;database=**your database**" providerName="MySql.Data.MySqlClient" /></connectionStrings>
**Restart Visual Studio**
My Settings:
- Microsoft Visual Studio Community 2015
- Dot Net Framework 4.5.2
- Asp.Net MVC 5.2.3.0
- MySql Server 5.6
Not sure if this is still a problem for you, guys, but none of the above solutions worked for me... until I found this:
http://www.microsoft.com/en-us/download/details.aspx?id=40762
After applying the patches (for both VS2013 and VS2012), I got VS2013 working wonderfully with EF6 for MySql.
ps. Package versions installed (from NuGet):
EntityFramework - 6.1.3 (03/10/2015)
MySqlData - 6.9.6 (02/24/2015)
MySql.Data.Entity - 6.9.6 (02/24/2015)
MySql.Web - 6.9.6 (02/24/2015)
NuGet does the job right and updates Web.Config accordingly, filling the "entityFramework" section with whatever needed.
For VS2013, it simply goes from "Not Working at all" to "Fully functional". For VS2012, it makes it possible to use "Code First from Database", which was not available before applying the patch.
I wish I had found this about 10 days ago, so hope this may still be of some help.
For me reinstalling MySQL and using the installed connector version as a reference in Visual studio worked!
Steps:
- Reinstall MySQL Tools with the latest stable MySQL connector for windows.
Add this 3 files as reference in Visual Studio:
MySql.Data.dll
- MySql.Data.Entity.EF6.dll
MySql.Web.dll
-
Modify following Web.config from
<providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers>
To:
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
</providers>
Make sure your connection username/password/db name are correct or Visual Studio may crash. (Happened with me.)
My was facing the same issue.
I did the following:
1. Install MySQL for Visual Studio from:
https://dev.mysql.com/downloads/windows/visualstudio/
2. Install MySql.Data in my project
3. Install MySql.Data.EntityFramework in my project