VS+mysql+EF搭建
2016年7月6日更新:
vs2010只需要安装mysql的.net connector就可以
vs2012, vs2015都需要安装.net connector + ODBC connector才行
并且, 安装完ODBC connector后, 需要到 控制面板->管理工具->ODBC数据源 里面去添加Mysql数据源
====================================================================
安装VS2010后, 要先装这两个扩展包, 因为2010不是默认安装的.
首先从扩展管理器中安装NuGet Package Manager
再从NuGet Package Manager中安装最新版EF
再从NuGet Package Manager中搜索"mysql", 装搜出来的前三个插件, 都要装最新版的.
此时去新建实体数据模型, 可能会出现一个简单的报错:
在 .NET Framework Data Provider for Microsoft SQL Server Compact 3.5 中发生错误。请与提供程序供应商联系以解决此问题。
解决方案如下:
1.打开注册表
2.分别删掉以下两个注册表文件
32位操作系统
(1) HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio10.0DataProviders{7C602B5B-ACCB-4acd-9DC0-CA66388C1533}
(2)HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio9.0DataProviders{7C602B5B-ACCB-4acd-9DC0-CA66388C1533}
64位操作系统
(1) HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftVisualStudio10.0DataProviders{7C602B5B-ACCB-4acd-9DC0-CA66388C1533}
(2)HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftVisualStudio9.0DataProviders{7C602B5B-ACCB-4acd-9DC0-CA66388C1533}
再重新试一下,完美解决了。
导入数据模型的时候, 可能导入空的edmx, 然后报这个错:
无法生成模型:“表“TableDetails”中列“IsPrimaryKey”的值为 DBNull。
这是mysql导入EF的一个bug, 解决办法:
在数据库中输入:
use <<database name>>;
set global optimizer_switch='derived_merge=OFF';
后面不用看, 是VS2015的步骤, 重复了N次, 都以失败告终, 别试了.
==========================================================================================================
参考 http://blog.csdn.net/majormayer/article/details/50510223
ADO.NET实体数据模型默认是不支持MySQL数据库的,本文档将介绍如何让VS ADO.NET实体数据模型支持MySQL。
1.下载mysql installer. http://www.mysql.com/why-mysql/windows/visualstudio/
2.安装mysql, 勾选里面的for visual studio插件, 版本不能错:
MySQL Connector/Net(http://dev.mysql.com/downloads/connector/net/)Version:6.9.8 X86
MySQL for VisualStudio(http://dev.mysql.com/downloads/windows/visualstudio/)Version:1.2.5 X86
3.在visual studio中新建一个Asp.net Mvc的项目
4.打开 菜单"工具"->"库程序包管理器"->"程序包管理器控制台",然后在VS工作区域的右下方会出现一个”程序包管理器控制台“命令操作台。
5.输入命令Install-Package EntityFramework
6.上面这个应该已经存在, 再输入 Install-Package MySql.Data.Entity,安装Mysql支持.注意:执行此命令前, 该解决方案的引用里不能有其它版本的MySql.Data.Entity.EF6包, 否则会发生异常
7.安装好了之后,这儿我们需要注意一个问题,Web.config下面的节点自动生成是有问题的,
搜索mysql的provider这个尖括号,
把
<provider ................></provider>
改为
<provider ................/>
8.重启解决方案, powerShell出现报错:
无法加载文件 C:\Users\yangyiru\Documents\Visual Studio 2015\Projects\webTestForMysql\packages\EntityFramework.6.1.3\tools\init.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 http://go.microso
ft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
这是因为当前执行策略为限制性策略, 不允许执行没有签名的脚本.
get-executionpolicy 这个命令查看当前策略
若要在本地计算机上运行您编写的未签名脚本和来自其他用户的签名脚本,请使用以下命令将计算机上的
执行策略更改为 RemoteSigned:
set-executionpolicy remotesigned
但在win7/win8/win10下,必须使用管理员的权限启动命令命令行,否则会报“Set-ExecutionPolicy : 对注册表项“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell”的访问被拒绝。”错误。
所以,必须以管理员身份运行visual studio
再执行set-executionpolicy remotesigned
设置完后, 启动项目, 不再报错了
9.测试, 新建ADO.NET实体数据, 可以导入mysql数据库了