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