博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Abp vNext 切换MySql数据库
阅读量:7239 次
发布时间:2019-06-29

本文共 2354 字,大约阅读时间需要 7 分钟。

Abp vNext是Abp的下一代版本,目前还在经一步完善,代码已经全部重写了,好的东西保留了下来,去除了很多笨重的东西,从官宣来看,Abp vNext主要是为了以后微服务架构而诞生的。

从源码来看,Abp vNext已经支持了多种数据库,Sql Server,MySql,PostgreSql等。默认情况下,你创建的项目使用的是Sql Server版本,如果需要切换到MySql的话,仅需要:

第一步,在你的EntityFrameworkCore(Abp的EF框架模块,用来创建DbContext,数据迁移用的)中,从NuGet中安装Volo.Abp.EntifyFrameworkCore.MySql

第二步,打开TGDbContextFactory.cs

第三部,修改代码:

public TGDbContext CreateDbContext(string[] args){    var configuration = BuildConfiguration();    var builder = new DbContextOptionsBuilder
() .UseSqlServer(configuration.GetConnectionString("Default")); return new TGDbContext(builder.Options);}

改成

public TGDbContext CreateDbContext(string[] args){    var configuration = BuildConfiguration();    var builder = new DbContextOptionsBuilder
() .UseMySQL(configuration.GetConnectionString("Default")); return new TGDbContext(builder.Options);}

原本以为这样就能ok的,update-database的时候一堆错误,去issue上看了下,都有这个问题,有人建议用Pomele的MySql驱动,还提了PR,当我今天(3月9号)去看的时候PR已经通过,但Nuget包还未更新。

自给自足丰衣足食,自己来吧,其实非常简单

先去掉刚引入的Volo.Abp.EntityFrameworkCore.MySql,然后引入Pomelo.EntityFrameworkCore.MySql,随后上述代码改为:

public TGDbContext CreateDbContext(string[] args){    var configuration = BuildConfiguration();    var builder = new DbContextOptionsBuilder
() .UseMySql(configuration.GetConnectionString("Default")); return new TGDbContext(builder.Options);}

ok,简单改造完成,我们再来update-database,我们的创建顺利的完成了。

你以为结束了吗,幼稚!默认启动的时候他还是会选择Sql Server,我们看下代码,在Web项目下的xxWebModule.cs,xx是你的项目名,这个是我们web的Module文件,我们知道Abp是一个Module加载的框架。在这个项目中同样引入Pomelo.EntityFrameworkCore.MySql,随后修改ConfigureDatabaseServices方法,

private void ConfigureDatabaseServices(){    Configure
(options => { options.Configure(context => { if (context.ExistingConnection != null) { context.DbContextOptions.UseMySql(context.ExistingConnection); } else { context.DbContextOptions.UseMySql(context.ConnectionString); } }); });}

改完以上的代码,你就可以顺利启动Abp vNext for MySql了。

改的不是很优雅,毕竟下一个版本应该会解决这个问题。之前用Abp Core做了小程序并放到了生产环境,启动慢了点,但是运行什么都比较稳定,开发也比较便捷,看了Abp vNext后,感觉一种小清新,相信在不久之后,我会使用它放到生产环境。其实一些老鸟的话,自己都有自己的框架,说实在的,Abp的好处就在于能够让大家有一种统一的快速的开发方式。

PS:陪儿子写字写了3个小时,写1个字发呆5分钟以上,能理解这种痛苦吗?

转载于:https://www.cnblogs.com/inday/p/abp-vNext-for-Mysql.html

你可能感兴趣的文章
Unity Game窗口中还原Scene窗口摄像机操作 强化版
查看>>
javascript实现九九乘法表
查看>>
Eclipse的WorkingSet使用(转载)
查看>>
缓存系列之五:通过codis3.2实现redis3.2.8集群的管理
查看>>
数据库(二)
查看>>
数组各元素随机赋值、求和、求平均值、求最大值的各类测试(一维数组)
查看>>
Linux学习之分区自动挂载与fstab文件修复(九)
查看>>
用Javascript获取页面元素的位置(转)
查看>>
matlab实现MCMC的马尔可夫切换ARMA - GARCH模型估计
查看>>
面向对象程序设计 总结作业
查看>>
django总结-从socket到实战的概略
查看>>
【转载】复制文件到已存在的Jar
查看>>
Sublime Text3常用插件以及安装方法(实用)
查看>>
javaWeb服务详解(含源代码,测试通过,注释) ——applicationContext-Service.xml
查看>>
基本数据类型(int,bool,str)
查看>>
从内而外
查看>>
Unity 一个简单的鼠标跟随
查看>>
vim下go开发配置
查看>>
JVM中的堆与栈的异同点.
查看>>
树莓派raspberry pi配置
查看>>