基于Abp 的.net core 工程改造mysql 的记录

本文档介绍了如何将基于Abp框架的.NET Core项目改造为使用MySQL数据库,包括从官方站点创建Demo、修改项目引用、配置DbContext、定义实体和映射逻辑,以及使用EntityFrameworkCore进行数据库迁移创建。

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

1. 首先从 https://aspnetboilerplate.com/ 创建个demo, 注意:abp现在有2个网站创建模板, 另一个是 http://abp.io/。 区别是abp.io是基于.net core 3.0以上的。因为项目需求, 此处用的还是第一个网站创建。

2. 改造EntityFrameworkCore工程的引用,目前是用的.net core 2.2。具体最终的引用如下

3. 该种EntityFrameworkCore工程里DbContextOptionsConfigurer 类。 如果没有指定mysql的版本, 最终在update-database时可能会出现datetime(6) 语法错误

 

   public static class DbContextOptionsConfigurer

    {

        public static void Configure(

            DbContextOptionsBuilder<CollaborationPlatformDbContext> dbContextOptions,

            string connectionString

            )

        {

            /* This is the single point to configure DbContextOptions for CollaborationPlatformDbContext */

            dbContextOptions.UseMySql(connectionString,

                mysqlOptions =>

                {

                    //此处指定mysql版本是因为code first生成的msyql 语法和版本相关, 比如DateTime

                    mysqlOptions.ServerVersion(new Version(5, 5), ServerType.MySql);

                });

        }





        public static void Configure(

            DbContextOptionsBuilder<CollaborationPlatformDbContext> builder,

            DbConnection connection)

        {

            builder.UseMySql(connection,

                mysqlOptions =>

                {

                    //此处指定mysql版本是因为code first生成的msyql 语法和版本相关, 比如DateTime

                    mysqlOptions.ServerVersion(new Version(5, 5), ServerType.MySql);

                });

        }

    }

4. 在.Core工程中定义实体

public class Abc: Entity<int>

    {

        private string _name = string.Empty;

        public string Name

        {

            get

            {

                return _name;

            }

            set

            {

                _name = value;

            }

        }

    }

 

5. 在EntityFrameworkCore工程里定义对应的CodeFirst映射逻辑类

public class AbcConfiguration : IEntityTypeConfiguration<Abc>

    {

        public void Configure(EntityTypeBuilder<Abc> builder)

        {

            builder.ToTable("Abc");

        }

    }

6. 在EntityFrameworkCore工程里的xxxDbContext.cs内, 定义表

//Add DbSet properties for your entities...

        public virtual DbSet<Abc> Abcs

        {

            get; set;

        }

 

7. 继续在xxxDbContext类的OnModelCreating方法中添加刚才的code first 逻辑


protected override void OnModelCreating(ModelBuilder modelBuilder)

        {

            base.OnModelCreating(modelBuilder);





             builder.ApplyConfiguration(new AbcConfiguration());

        }

 

到此, 整个mysql改造及初步的表定义及持久化demo就ok了, 现在需要创建对应的mysql

 

  1. 在某个启动工程里添加mysql的connectionstring, 比如web工程或者console工程里的app.config 或者appsettings.json

  2. 在包含connectionstring的工程上右键选择 “设为启动项目”

  3. 在vs顶部菜单上,选择“工具”/“Nuget 包管理器” / “程序包管理器控制台”, 也就是常说的PMC

  4. 在打开的PMC中的顶部“默认项目”中选择EntityFrameworkCore工程, 这个步骤非常重要。  不然会报错“Your target project '' doesn't match your migrations assembly ''. Either change your target project or change your migrations assembly.”

  5. 在PMC中敲入Add-Migration "Init_Create"命令

最终会在选择的工程中创建Migrations文件夹, 并生成数据库创建的类, 我们需要打开看看里面的表名、列名、列定义、表之间的关系是否符合我们的预期。

 

    6. 接下来我们就可以在PMC中敲入Update-Database命令, 用来调用migration的类来创建数据库及表

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值