一、创建项目 |
创建DAL、Service、Model、ViewModel、WebAPI项目
引用如下:
Model:无引用
ViewModel:无引用
DAL:引用Model、ViewModel
Service:引用DAL、Model、ViewModel
WebAPI:引用Service、Model、ViewModel
二、添加EF映射 |
1.Model右击->添加->类
2.选择来自数据库的EF设计器
3.新建连接->选择MySQL Database数据源
4.输入IP、用户名、密码->选择要用的数据名->点击测试(测试成功就好啦!)
5.选择是,在链接字符串中包含敏感数据—另存为名字(默认即可)->下一步
6.选择实体框架版本:这里应该选择6,因为WebAPI默认是6,Model层要与WebAPI对应,但是这里无法选择,不过可以将5升级成6
7.选择要映射到数据库中的表
8.将App.Config中的链接数据库的字符串复制到WebAPI的Web.config
9.DAL层如果想要正常使用需要添加EntityFramework6
工具->NuGet包管理器->管理解决方案的NuGet程序包(选择的版本需要与WebAPI匹配)
三、将EF5升级成EF6 |
00.如果不升级,将会报如下错误:
01.在NuGet包管理器中将Model层的EntityFramework改成6.1.3
报错如下:
报错中有一句话:
请参阅 http://go.microsoft.com/fwlink/?LinkId=260882。
打开之后是微软的官方帮助文档,于是翻译成了中文,找到了将EF5升级到EF6
按照官网进行操作即可,步骤如下:
1. 安装EF6 NuGet软件包
2. 确保删除了对System.Data.Entity.dll的程序集引用
如果没有的话手动删除一下吧!
3. 交换任何EF Designer(EDMX)模型以使用EF 6.x代码生成
3.1删除图片中的两个文件,然后在图中->添加代码生成项->自动生成
3.2名字与原来EF映射的名字相同即可
4. 在DAL中和WebAPI中的controller中添加
using System.Data.Entity.Core;
四、引用 |
运行时会报如下错误:
解决方案:
在Web.config以及App.config中的添加以下代码
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
同时:在Model和WebAPI中引用MySql.Data.Entity.EF6.dll
路径如下:C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.7\Assemblies\v4.5
五、结果如下 |
六、总结 |
1.沉重冷静
2.多看报错信息(可以给我们提供解决方案的路径,提示信息(答案就在问题中))
3.将错误记录下来,把每一个的解决方案记录下来,不然很容易兜圈子
4.我们是最棒的!