ABP改为MYSQL遇坑记

在公司内部使用.NET CORE 2.1和ABP框架4.2进行开发时,需要将默认的SQL Server数据库更换为MySQL。在安装pomelo.entityframeworkcore.mysql和Pomelo.EntityFrameworkCore.MySql.Design包时,遇到由于版本不匹配导致的System.MissingMethodException异常。错误发生在尝试使用3.1版本的pomelo.entityframeworkcore.mysql包时。解决办法是回退到2.1版本的包,从而避免找不到方法的问题,成功完成数据库迁移。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

公司内部只支持.NET CORE 2.1版本,所以采用ABP版本4.2进行功能开发,还需要修改sqlserver为MYSQL

1.安装pomelo.entityframeworkcore.mysql和Pomelo.EntityFrameworkCore.MySql.Design

工具>nuget 包管理器>管理解决方案的nuget程序包

选择entityframeworkcore和web两个项目,然后版本选择pomelo.entityframeworkcore.mysql 为2.1版本(不能选择最新3.1版本)

这里如果选择3.1版本会出现如下问题:

System.MissingMethodException: Method not found: 'Void Microsoft.EntityFrameworkCore.Storage.Internal.RelationalParameterBuilder..ctor(Microsoft.EntityFrameworkCore.Storage.IRelationalTypeMapper)'.
   at Microsoft.EntityFrameworkCore.Storage.Internal.MySqlCommandBuilder..ctor(IDiagnosticsLogger`1 logger, IRelationalTypeMapper typeMapper)
   at Microsoft.EntityFrameworkCore.Storage.Internal.MySqlCommandBuilderFactory.CreateCore(IDiagnosticsLogger`1 logger, IRelationalTypeMapper relationalTypeMapper)
   at Microsoft.EntityFrameworkCore.Storage.Internal.RawSqlCommandBuilder.Build(String sql)
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()
   at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
   at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
Method not found: 'Void Microsoft.EntityFrameworkCore.Storage.Internal.RelationalParameterBuilder..ctor(Microsoft.EntityFrameworkCore.Storage.IRelationalTypeMapper)'.

通过选择2.1版本后解决

ABP创建MySQL数据库的步骤如下: 1. 首先,使用ABP提供的项目模板创建一个新的项目。该模板提供了Module Zero项目,其中包含了用户、角色、权限等通用功能。然而,使用该模板连接MySQL可能会导致错误,无法正常运行。 2. 为了解决ABP+MySQL的问题,需要进行一些修改。打开源代码中的`DYDbContextConfigurer`类,该类用于配置数据库连接。在该类中,找到`Configure`方法,并将其中的代码修改如下: ```csharp public static class DYDbContextConfigurer { public static void Configure(DbContextOptionsBuilder<DYDbContext> builder, string connectionString) { builder.UseMySql(connectionString, new MySqlServerVersion(new System.Version(5, 0))); } public static void Configure(DbContextOptionsBuilder<DYDbContext> builder, DbConnection connection) { builder.UseMySql(connection, new MySqlServerVersion(new System.Version(5, 0))); } } ``` 3. 接下来,打开Web项目的Web.config文件。由于上一步添加了`MySql.Data.Entity`,所以Web.config已经添加了MySQL的相关配置。在Web.config中,找到连接字符串部分,注释掉SQL Server的连接字符串,并添加新的MySQL连接字符串。 通过以上步骤,你就可以成功创建ABP项目的MySQL数据库了。请确保你已经正确配置了MySQL数据库,并提供了正确的连接字符串。 #### 引用[.reference_title] - *1* *3* [使用ABP EntityFramework连接MySQL数据库](https://blog.youkuaiyun.com/weixin_31292909/article/details/113164152)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [ABP框架数据库改为MySQL](https://blog.youkuaiyun.com/daiyue945/article/details/128236930)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值