在Abp框架中使用Mysql数据库的方法以及相关问题小记

最近发现了一款DDD的框架

看起来不错,据说挺流弊的

刚好最近要弄点小东西,拿来试试也不错

苦于穷逼买不起高配服务器,只好装mysql数据库了

下面说下如何在该框架下使用Mysql数据库

打开项目后,在“程序包管理器控制平台”中选择*.EntityFramwork以及*.Web项目(*号为你的项目名称前缀)

Install-Package MySql.Data.Entity // Install-Package MySql.Data.Entity   - 安装MySql.Data.Entity组件的命令

输入以上语句安装Mysql的相关组件

然后更改连接字符串

<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" />//这里可以看到以及自动为我们引用了mysql的相关项
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices,EntityFramework.SqlServer" />
</providers>
</entityFramework> <connectionStrings>
<add name="Default" providerName="MySql.Data.MySqlClient" connectionString="server=localhost;port=3306;database=sampledb;uid=root;password=root" />
</connectionStrings>

然后在“程序包管理控制平台”更新数据库

 Update-Database –Verbose

至此,我们就可以使用该项目连接mysql数据库了

实践之中,经常会出现一些想不到的问题

这里记下我自己遇到的几个小问题

1、更新数据库时提示“Specified key was too long; max key length is 767 bytes”

这个问题一般是由于(我认为,欢迎dalao指导)数据库生成器配置不正确导致的,MSSql的相关配置在Mysql里并不是全部适用

这时需要在Dbcontext类上指定生成器的类型

[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class MyContext : DbContext{}

这里的MyContext为你的EF相关类

2、Unknown storage engine 'InnoDb'

这种情况就比较少见了

这是mysql默认引擎未开启InnoDb导致的

需要更改一下mysql的相关配置

有两种解决方法:

        方法一.修改my.ini文件,把skip-innodb这行注释掉
        方法二.修改my.ini文件,default-storage-engine=InnoDb

上一篇:C#通过WebClient/HttpWebRequest实现http的post/get方法


下一篇:ABP理论学习之数据传输对象(DTO)