使用ABP EntityFramework连接MySQL数据库
ASP.NET Boilerplate(简称ABP)是在.Net平台下一个很流行的DDD框架,该框架已经为我们提供了大量的函数,非常方便与搭建企业应用。
关于这个框架的介绍我就不多说,有兴趣的可以参见官方文档:http://www.aspnetboilerplate.com/Pages/Documents
使用ABP+EF+SQL Server是比较推荐的组合,但是既然我们使用的是EF,那么就应该是和数据库分离的,也就意味着我们应该可以采用其他的数据库,比如MySQL。
ABP初始化的项目模板还提供了Module Zero项目,为我们提供了用户、角色、权限等等通用功能,但是在使用初始化的模板连接MySQL却会报错,无法运行,下面我来解决ABP+MySQL的问题。这是操作步骤:
1.从官方网站下载ABP项目模板,并解压到本地,用VS打开,这里我们新建一个项目ConnectMySql。
2.设置XXX.Web为启动项目,Build这个Solution,使得NuGet下载相关的包。
3.准备好一个SQL Server数据库,修改Web.config数据库的ConnectionString,连接到SQL Server数据库。
4.打开Package Manager Console窗口,选择XXX.EntityFramework为默认项目,运行Update-Database命令,系统会在SQL Server中创建数据库和对应的表。

5.打开SSMS,连接到上一步新建的数据库,选择生成脚本命令,并在高级选项中选择“Schema and data”生成一个创建表和填充数据的脚本文件。
6.接下来就是比较繁琐的SQL Server脚本转MySQL脚本了,我采用NotePad++,做了多次的批量替换,把脚本转换成MySQL支持的内容。
为了方便大家,我直接把转换好的SQL脚本放出,大家直接运行即可。 脚本下载
7.打开MySQL Server,新建一个MySQL数据库,并运行前一步骤准备好的脚本。
8.我们回到VS,为XXX.EntityFramework和XXX.Web,通过Nuget添加MySql.Data.Entity:

9.打开Web项目的Web.config,由于上一步添加了MySql.Data.Entity,所以Web.config已经添加了MySql的相关配置。我们只需要修改连接字符串,注释掉SQL Server的字符串,添加新的连接字符串:
<add name="Default" providerName="MySql.Data.MySqlClient" connectionString="server=localhost;port=3306;database=test;uid=root;password=xxx" />
10.打开EntityFramework项目的Configuration对象,在Migrations文件夹中,修改构造函数,指定使用MySQL的SQL生成器。
public Configuration()
{
AutomaticMigrationsEnabled = false;
ContextKey = "ConnectMySql";
SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator());
}
11.现在我们来试一试是否可以针对MySQL使用EF的Code First。我们在XXX.Core中创建一个测试用的实体Student:
public class Student:Entity
{
[StringLength(50)]
public string Name { get; set; }
public DateTime Birthdate { get; set; }
public bool Gender { get; set; }
}
12.在XXX.EntityFramework中找到ConnectMySqlDbContext,并添加Student的应用:
public class ConnectMySqlDbContext : AbpZeroDbContext<Tenant, Role, User>
{
//TODO: Define an IDbSet for your Entities...
public IDbSet<Student> Students { get; set; }
/* NOTE:
* Setting "Default" to base class helps us when working migration commands on Package Manager Console.
* But it may cause problems when working Migrate.exe of EF. If you will apply migrations on command line, do not
* pass connection string name to base classes. ABP works either way.
*/
public ConnectMySqlDbContext()
: base("Default")
{
}
……
13.我们编译一下这个Solution,然后在Package Manager Console窗口中,输入命令Add-Migration AddStudent,这里的AddStudent是对我们这次更改的一个命令。命令运行完成后,在Migrations文件夹中,会创建升级数据库的C#代码。

14.继续在Package Manager Console窗口中,输入命令Update-Database,系统会将数据库更改应用到我们的MySQL数据库中。

15.我们到MySQL数据库中,刷新,可以看到系统自动创建了Students数据库:

16.最后,我们Build整个Solution,运行网站,可以看到我们网站正常运行了。
使用ABP EntityFramework连接MySQL数据库的更多相关文章
- MVC3、如何应用EntityFramework 连接MySql 数据库
原文:MVC3.如何应用EntityFramework 连接MySql 数据库 新的一年,新的开始. 今天总结的主题是在MySql中应用EntityFramework 的Code First模式. 开 ...
- ABP框架连接Mysql数据库
开始想用Abp框架来搭建公司的新项目,虽然一切还没有定数,但是兵马未动,粮草先行,我先尝试一下整个过程,才能够更好的去争取机会. 此次技术选型:Abp(Asp.Net core mvc)+mysql( ...
- EntityFramework 6.0< Code First > 连接 Mysql数据库(转)
http://blog.csdn.net/kmguo/article/details/19650299 网上有很多关于用EntityFrame来连接Mysql数据库的教程,可是很多并不靠谱,转载的太多 ...
- EntityFramework 6.0< Code First > 连接 Mysql数据库
网上有很多关于用EntityFrame来连接Mysql数据库的教程,可是很多并不靠谱,转载的太多了.找了很久,总算是配置好了,现在分享一下. 一,安装: 1.开发环境: VS2013与EF6 ...
- 转载:EntityFramework 6.0< Code First > 连接 Mysql数据库
转载自:http://blog.csdn.net/kmguo/article/details/19650299 网上有很多关于用EntityFrame来连接Mysql数据库的教程,可是很多并不靠谱,转 ...
- Entity Framework连接Mysql数据库并生成Model和DAL层
Entity Framework (EF,ADO.NET Entity Framework)是微软官方提供的.NET平台的ORM框架.相比于LINQ TO SQL,EF框架具有很明显的优势: EF框架 ...
- Vs2013 使用EF6 连接mysql数据库
最近在使用MySQL数据库,在使用EF框架连接MySQL数据库时发现了一个问题,使用DB First创建实体对象的时候会出现如下图的错误:您的项目引用了最新版实体框架….. (如下图)或者会出现新建实 ...
- 使用EF CodeFirst连接MySql数据库
如何使用EF CodeFirst连接MySql数据库? 我们这篇文章介绍怎么使用EF连接MySql 作者的环境 VS2017.Win10.MySql5.x 前言 一般在EF中,默认是使用SqlServ ...
- 使用VS2013 + EF6 连接Mysql数据库
使用VS2013 + EF6 + .NET4.5 连接Mysql数据库 1.安装插件 在使用Visual Studio 2013添加ADO.NET实体数据模型新建连接时,默认是没有Mysql选项的.此 ...
随机推荐
- Spark核心作业调度和任务调度之DAGScheduler源码
前言:本文是我学习Spark 源码与内部原理用,同时也希望能给新手一些帮助,入道不深,如有遗漏或错误的,请在原文评论或者发送至我的邮箱 tongzhenguotongzhenguo@gmail.com ...
- 查看Windows下引起Oracle CPU占用率高的神器-qslice
前言: qslice是一个win2000的工具包,能分析进程的cpu占用率,我们用于分析oracle的性能 这是绿色的软件无需安装. 我们经常会碰到oracle的CPU占用居高不下,无法快速定位到问题 ...
- 基于jsp+servlet图书管理系统之后台万能模板
前奏: 刚开始接触博客园写博客,就是写写平时学的基础知识,慢慢发现大神写的博客思路很清晰,知识很丰富,非常又价值,反思自己写的,顿时感觉非常low,有相当长一段时间没有分享自己的知识.于是静下心来钻研 ...
- ★Kali信息收集~3.子域名系列
★3.1Netcraft :子域名查询 官网:http://searchdns.netcraft.com/ 输入要查询的域名,即可得知子域名 3.2Fierce :子域名查询 概述: fierce ...
- ASP.NET中Session的sessionState 4种mode模式
1. sessionState的4种mode模式 在ASP.NET中Session的sessionState的4中mode模式:Off.InProc.StateServer及SqlServer. 2. ...
- 为 Sublime Text 3059 配置 PHP 编译环境
关于 Sublime Text 3059 的安装及汉化 请参看 http://www.xiumu.org/note/sublime-text-3.shtml 为 sublime Text 配置 PH ...
- 【译】Unity3D Shader 新手教程(6/6) —— 更好的卡通Shader
本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 动机 如果你想了解以下几件事,我建议你阅读以下这篇教程: 想知道如何写一个multipass的toon shade ...
- Ubuntu-server 下Apache2 配置.htaccess 隐藏thinkPHP项目index.php
需要开启Apache2的rewrite模块 1.打开/etc/apache2/apache2.conf 将文件中的AllowOverride None改为AllowOverride All 2.修改m ...
- SQL连接
SQL连接可以分为内连接.外连接.交叉连接. 数据库数据: book表 stu表 1.内连接 ...
- ASP.NET Core 中文文档 第二章 指南(8) 使用 dotnet watch 开发 ASP.NET Core 应用程序
原文:Developing ASP.NET Core applications using dotnet watch 作者:Victor Hurdugaci 翻译:谢炀(Kiler) 校对:刘怡(Al ...