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

【无标题】ABP更换MySql数据库

原因:ABP默认使用的数据库是sqlServer,本地没有安装sqlServer,安装的是mysql,需要更换数据库

ABP版本:9.0

此处以官网TodoApp项目为例

打开EntityFrameworkCore程序集,可以看到默认使用的是sqlServer,此处截图为已安装mysql依赖包

步骤一、安装mysql依赖包

https://abp.io/packages

如果没安装 ABP CLI ,先安装

dotnet tool install -g Volo.Abp.Studio.Cli

安装ABP依赖包

abp add-package Volo.Abp.EntityFrameworkCore.MySQL

安装完mysql依赖包后,sqlserve依赖包可以删除也可以留着

步骤二、更改TodoAppEntityFrameworkCoreModule.cs文件

  • 1、将 <font style="color:rgb(214, 51, 132);">UseSqlServer()</font> 改为 <font style="color:rgb(214, 51, 132);">UseMySQL()</font>
  • 2、引入 Volo.Abp.EntityFrameworkCore.MySQL 命名空间
  • 3、将 <font style="color:rgb(214, 51, 132);">typeof(AbpEntityFrameworkCoreSqlServerModule</font>) 替换为 <font style="color:rgb(214, 51, 132);">typeof(AbpEntityFrameworkCoreMySQLModule)</font>

修改完成代码如下

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.AuditLogging.EntityFrameworkCore;
using Volo.Abp.BackgroundJobs.EntityFrameworkCore;
using Volo.Abp.BlobStoring.Database.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.MySQL;
using Volo.Abp.FeatureManagement.EntityFrameworkCore;
using Volo.Abp.Identity.EntityFrameworkCore;
using Volo.Abp.Modularity;
using Volo.Abp.OpenIddict.EntityFrameworkCore;
using Volo.Abp.PermissionManagement.EntityFrameworkCore;
using Volo.Abp.SettingManagement.EntityFrameworkCore;
using Volo.Abp.Studio;
using Volo.Abp.TenantManagement.EntityFrameworkCore;

namespace TodoApp.EntityFrameworkCore;

[DependsOn(
    typeof(TodoAppDomainModule),
    typeof(AbpPermissionManagementEntityFrameworkCoreModule),
    typeof(AbpSettingManagementEntityFrameworkCoreModule),
    typeof(AbpEntityFrameworkCoreMySQLModule),
    typeof(AbpBackgroundJobsEntityFrameworkCoreModule),
    typeof(AbpAuditLoggingEntityFrameworkCoreModule),
    typeof(AbpFeatureManagementEntityFrameworkCoreModule),
    typeof(AbpIdentityEntityFrameworkCoreModule),
    typeof(AbpOpenIddictEntityFrameworkCoreModule),
    typeof(AbpTenantManagementEntityFrameworkCoreModule),
    typeof(BlobStoringDatabaseEntityFrameworkCoreModule)
    )]
public class TodoAppEntityFrameworkCoreModule : AbpModule
{
    public override void PreConfigureServices(ServiceConfigurationContext context)
    {

        TodoAppEfCoreEntityExtensionMappings.Configure();
    }

    public override void ConfigureServices(ServiceConfigurationContext context)
    {
        context.Services.AddAbpDbContext<TodoAppDbContext>(options =>
        {
                /* Remove "includeAllEntities: true" to create
                 * default repositories only for aggregate roots */
            options.AddDefaultRepositories(includeAllEntities: true);
        });

        if (AbpStudioAnalyzeHelper.IsInAnalyzeMode)
        {
            return;
        }

        Configure<AbpDbContextOptions>(options =>
        {
            /* The main point to change your DBMS.
             * See also TodoAppDbContextFactory for EF Core tooling. */

            options.UseMySQL();

        });
        
    }
}

步骤三、修改TodoAppStoreDbContextFactory.cs

UseSqlServer 修改为 UseMySQL

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

    TodoAppEfCoreEntityExtensionMappings.Configure();

    var builder = new DbContextOptionsBuilder<TodoAppDbContext>()
        .UseMySql(configuration.GetConnectionString("Default"), ServerVersion.Parse("5.7.38-mysql"));

    return new TodoAppDbContext(builder.Options);
}

步骤四、更改连接字符串

更改appsettings.json配置文件下的连接字符串,TodoApp.WebTodoApp.DbMigrator程序集下

"ConnectionStrings": {
    "Default": "Server=120.79.25.229;database=todoDatabase;uid=root;pwd=1126438236@qq.com;"
    },

步骤五、数据库迁移

1、删除TodoApp.EntityFrameworkCore程序集下Migrations文件夹中的所有文件并重新构建解决方案

如果没删除,迁移的时候会报错

2、在包管理控制台上执行迁移命令,注意,默认项目要选 TodoApp.EntityFrameworkCore

执行迁移命令

add-migration "initial"

更新数据库命令

update-database

数据库迁移过程中遇到的错误

1、配置文件appsettings.json中连接字符串错误,

相关文章:

  • 8个Linux进程管理命令详解及示例(三):pgrep和flock命令
  • Coze与Dify:企业级大模型应用开发认知陷阱与破局之道
  • 什么是深拷贝和浅拷贝?它们有什么区别?
  • PostgreSQL10 物理流复制实战:构建高可用数据库架构!
  • 合成复用原则
  • 信刻光盘安全隔离与信息交换系统让“数据摆渡”安全高效
  • 15.14 QLoRA量化低秩适配微调:华盛顿大学的显存优化革命
  • 降维攻击!PCA与随机投影优化高维KNN
  • DA14531 —超低功耗SoC
  • 遗传算法详解及在matlab中的使用
  • 51c大模型~合集48
  • Linux操作系统5-进程信号1(信号基础)
  • 如何安全获取股票实时数据API并在服务器运行?
  • Nacos
  • Angular从入门到精通教程篇章
  • 每日一题-设计食物评分系统,哈希表的有效使用
  • 【MySQL】索引(中)
  • 基于ArcGIS Pro、Python、USLE、INVEST模型等多技术融合的生态系统服务构建生态安全格局
  • MYSQL表的操作
  • ROS2软件调用架构和机制解析:Publisher创建
  • 微软网站开发工具/管理人员课程培训
  • 做网站的工具/品牌传播策划方案
  • 辽宁省建设厅安全员考试官方网站/市场营销的策划方案
  • 网站常规后台/百度付费推广的费用
  • python官方网站/北京全网推广
  • 有什么网站做头像/最新seo教程