当前位置: 首页 > news >正文

Volo.Abp.EntityFrameworkCore.MySQL 使用

  • 创建新项目

打开 https://cn.abp.io/Templates ,任意选择一个项目类型,然后创建项目,我这里创建了一个Web Api

 

 

解压项目,还原Nuget,项目目录如下:

 

 

首先我们来查看下整个项目关于数据库方面的引用:

 

 

从图中我们可以看到IdentityServerHostMKM.BookStore.Host 这两个站点有引用,IdentityServerHost是用户中心API,和MKM.BookStore.Host 是我们的业务中心API,这里我们以MKM.BookStore.Host的处理为例来讲解下如何把原有的SqlServer替换为Mysql。

1、在以MKM.BookStore.Host添加Volo.Abp.EntityFrameworkCore.MySQL的引用

2、修改数据库Default的连接字符串为Mysql的数据库连接字符串

1     //SqlServer
2     //"Default" "Server=localhost;Database=BookStoreHost;Trusted_Connection=True;MultipleActiveResultSets=true",
3     
4     //Mysql
5     "Default": "SERVER=192.168.2.15; PORT=3306; DATABASE=BookStoreHost; USER=root; PASSWORD=123456;",
6     
7     // 缓存数据库
8     "SqlServerCache": "Server=localhost;Database=BookStoreCache;Trusted_Connection=True;MultipleActiveResultSets=true"

 

3、DemoAppModule.cs

3.1 、替换引用

添加Volo.Abp.EntityFrameworkCore.MySQL的引用

注释Volo.Abp.EntityFrameworkCore.SqlServer的引用

3.2、替换Module

 1 typeof(AbpEntityFrameworkCoreSqlServerModule)替换为typeof(AbpEntityFrameworkCoreMySQLModule)
 2 
 3     [DependsOn(
 4         typeof(AbpAutofacModule),
 5         typeof(BookStoreApplicationModule),
 6         typeof(BookStoreEntityFrameworkCoreModule),
 7         typeof(BookStoreHttpApiModule),
 8         typeof(AbpPermissionManagementEntityFrameworkCoreModule),
 9         typeof(AbpSettingManagementEntityFrameworkCoreModule),
10         typeof(AbpAuditLoggingEntityFrameworkCoreModule),
11         //typeof(AbpEntityFrameworkCoreSqlServerModule)
12          typeof(AbpEntityFrameworkCoreMySQLModule)
13         )]

 

3.3、 UseSqlServer改为UseMySQL

1  Configure<AbpDbContextOptions>(options =>
2             {
3                 //options.UseSqlServer();
4                 options.UseMySQL();
5             });

 

4、DemoAppDbContextFactory.cs

        public DemoAppDbContext CreateDbContext(string[] args)
        {
            var configuration = BuildConfiguration();

            //var builder = new DbContextOptionsBuilder<DemoAppDbContext>()
            //    .UseSqlServer(configuration.GetConnectionString("Default"));

            var builder = new DbContextOptionsBuilder<DemoAppDbContext>()
                .UseMySQL(configuration.GetConnectionString("Default"));

            return new DemoAppDbContext(builder.Options);
        }

5、迁移&&生成

5.1、删除默认迁移文件

删除Migrations目录以及文件,因为默认的是SqlServer的,我们这里是需要生产Mysql的。

5.2、 生成新的迁移文件

MKM.BookStore.Host设置为启动项目,打开程序包管理控制台并且默认项目选择为MKM.BookStore.Host

执行迁移命令 

PM> add-migration mysql_init

 

 

5.3、更新数据库

PM> update-database -verbose

 

5.4、关闭 TodosController 的 Authorize,运行 MKM.BookStore.Host

    [RemoteService]
    [Area("BookStore")]
    [Route("api/BookStore/todos")]
    //[Authorize]
    public class TodosController : AbpController
    {
        private readonly ITodoAppService _todoAppService;

        public TodosController(ITodoAppService todoAppService)
        {
            _todoAppService = todoAppService;
        }

        [HttpGet]
        [Route("")]
        public Task<PagedResultDto<TodoDto>> GetListAsync()
        {
            return _todoAppService.GetListAsync();
        }
    }
}

  

 

 

github 地址:https://github.com/Jesn/MKM.BookStore.git

转载于:https://www.cnblogs.com/jesn/p/10268913.html

相关文章:

  • Future 和 FutureTask 源码详解
  • redis requires ruby version 2.2.2的解决方案
  • 百年老站换新颜 河南信阳火车站重新开通迎客
  • 零基础学算法-质数
  • 日本一名高龄男子开车冲上人行道 造成共7人受伤
  • 消息队列使用的四种场景介绍
  • python序列之元组介绍
  • NBA全明星队长选人环节将直播 又有什么新故事?
  • 过渡
  • 嵌入式应用选择合适的微控制器
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • bzoj 4566 [Haoi2016]找相同字符——广义后缀自动机
  • 实践这一次,彻底搞懂浏览器缓存机制
  • 一汽-大众SUV家族冰雪驾控营启动 在失控中感受操控
  • 微软Windows Core OS被曝应用了开源组件
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 2019.2.20 c++ 知识梳理
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • angular学习第一篇-----环境搭建
  • ES6--对象的扩展
  • Java面向对象及其三大特征
  • k8s如何管理Pod
  • Linux下的乱码问题
  • orm2 中文文档 3.1 模型属性
  • Python打包系统简单入门
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • Swoft 源码剖析 - 代码自动更新机制
  • Transformer-XL: Unleashing the Potential of Attention Models
  • underscore源码剖析之整体架构
  • vue脚手架vue-cli
  • 初识 beanstalkd
  • 分享一份非常强势的Android面试题
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 前端性能优化--懒加载和预加载
  • 如何编写一个可升级的智能合约
  • 如何用vue打造一个移动端音乐播放器
  • 收藏好这篇,别再只说“数据劫持”了
  • 听说你叫Java(二)–Servlet请求
  • 我这样减少了26.5M Java内存!
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​Linux·i2c驱动架构​
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • $().each和$.each的区别
  • $forceUpdate()函数
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (09)Hive——CTE 公共表达式
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (BFS)hdoj2377-Bus Pass
  • (C++)八皇后问题
  • (pojstep1.1.2)2654(直叙式模拟)
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (学习日记)2024.02.29:UCOSIII第二节