EF选择Mysql数据源
EF添加ADO.NET实体模型处直接选择Mysql数据源
最近想到EF是连接多数据库的orm框架,于是就想测试下。查了一堆网上资料后,测试连接mysql成功。步骤如下:
1、在你项目Model层中nuget安装MySql.Data.Entity
如果没安装这个provider 就进行下面的步骤。就会出现:
2、MySql官网下载mysql-installer-community-5.7.13.0
我这边是没安装过mysql,所以是安装全部,第一个选项,MySql Installer。主要目的除了安装mysql,就是安装mysql对于vs的数据源驱动,便于我们在新建ADO.NET实体模型的时候,选择对应的数据源(MySQL Database)。
3、安装好后,我这个传说中的window程序员必须要下个图形化管理界面。
然后里面新建个数据库,测试用。
4、接下来就可以进行测试啦~~~
首先在VS中新建个类库,这个不多说了,新建项目-->ADO.NET实体模型
新建连接
更改数据源
选择MySQL Database
Server name:localhost
用户名密码就不多说了。
然后就开始选择表进行实体映射,然后问题就出来了~~~
很奇怪哦,我们压根没这个TableDetails这个表,又哪儿来的主键类型为null。
百度!无所不能的网友给出了个解决问题的网址——>stakoverflow:
老外回答简洁,靠谱。
根据这回答咋操作呢?直接扔截图吧。
打开mysql的cmd窗口
use test;
set global optimizer_switch='derived_merge=OFF';
问题解决~~~~
这里注意(对于不熟悉mysql命令行的同志,比如我):结尾一定加分号!!!
上文测试用的数据库test下的school表就映射成功勒
完美~~~
提问:对于oracle,postgresql,这些数据库我也下载了,可能选择更改数据源的时候没有出来这些选项,这是需要我们单独去安装的吗?哪儿安装?找不到....
相关节点配置(个人纪录):
1、UI的webconfig配置数据库连接字符串肯定是少不了的。(连接字符串在我们Model层创建ADO.NET实体模型的时候就自动生成在了Model层的APPCONFIG中,拷贝过来即可)
<connectionStrings>
<!--mysql的数据库连接字符串-->
<add name="MysqlEntities" connectionString="metadata=res://*/ModelMysql.csdl|res://*/ModelMysql.ssdl|res://*/ModelMysql.msl;provider=MySql.Data.MySqlClient;provider connection string="server=localhost;user id=joey;password=lovemary;persistsecurityinfo=True;database=test"" providerName="System.Data.EntityClient" />
</connectionStrings>
2、nuget安装MySql.Data.Entity只需在Model层中进行,但是跟连接字符串一样,得再webconfig中定义一个节点,节点里面写路径方便程序去读取相关信息。
在entityFramework节点下添加MySql.Data.MySqlClient(System.Data.SqlClient是我们在UI nuget EntityFramework的时候自动加载的,sqlserver的驱动信息)
MySql.Data.MySqlClient同样我们在Model层nuget MySql.Data.Entity后就加进了APPCONFIG中,拷贝到UI的webconfig即可。(若嫌麻烦,就直接在UI层也nuget MySql.Data.Entity,节点就自动加上去了)
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<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, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</providers>
</entityFramework>
最新文章
- hibernate笔记--基于主键的单(双)向的一对一映射关系
- iOS9 适配(杂七杂八)
- HDU 5869 (离线+树状数组)
- 初识ActionScript
- [Python] Keep efficient by vim in Pycharm
- 百度地图开发的学习(一)——配置环境&;基础地图
- django连接mysql自动同步生成数据表
- javascript中substring()、substr()、slice()的区别
- hdu 2986 Ballot evaluation (模拟)
- To Noob Json是什么鬼?
- Java使用memcached
- H5 Video + DOM
- 插槽slot
- Day5 装饰器和文件操作
- leetcode1024
- VS2017 IDE开发工具选型、安装和使用
- 【鬼脸原创】JQuery获取元素的方法总结
- C# 调用C/C++动态链接库,结构体中的char*类型
- 【UOJ #107】【APIO 2013】ROBOTS
- 用SQL语句创建触发器
热门文章
- ASP NET Core ---POST, PUT, PATCH, DELETE,Model 验证
- 剑指offer-树的子结构17
- 主外键多表查询demo
- IDEA使用maven构建时控制台中文乱码的解决办法
- PAT 1080 MOOC期终成绩
- document.querySelector()和document.querySelectorAll()
- 【EasyNetQ】- 简介
- JavaScript中的String对象详解
- ElasticSearch1.7.1拼音插件elasticsearch-analysis-pinyin-1.3.3使用介绍
- Elasticsearch中的分词器比较及使用方法