mysql ef 注释_用EFCore的 FluentAPI 方式生成MySql 带注释的数据库表结构

采用的是net Core 3.1框架下的 的WebAPI项目。

1.  创建ASP.NET Core Web项目

3087eb471f5322f034db28b973443eba.png

b5326f5c802710c054799fb1a434025d.png

2. 添加NuGet引用包,包如下

Microsoft.EntityFrameworkCore

Microsoft.EntityFrameworkCore.Design

Microsoft.EntityFrameworkCore.Tool

Pomelo.EntityFrameworkCore.MySql

24446813a7dfe3915ce203807336f478.png

3. 创建继承自DbContext 的DataContext文件

public classDataContext : DbContext

{public DbSet OperateLog { get; set; }public DataContext(DbContextOptions options) : base(options)

{

}protected override voidOnConfiguring(DbContextOptionsBuilder optionsBuilder)

{//optionsBuilder.UseMySql("Server=localhost;database=omc;uid=root;port=3306;pwd=123321");

}protected override voidOnModelCreating(ModelBuilder modelBuilder)

{//base.OnModelCreating(modelBuilder);//Model Mapping用这个//modelBuilder.ApplyConfigurationsFromAssembly(typeof(DataContext).Assembly);//FluentAPI Mapping用这个

modelBuilder.ApplyConfigurationsFromAssembly(Assembly.GetExecutingAssembly());

}

}

4. 创建实体模型 OperateLog , 及实体映射数据库表的 OperateLogConfig

public classBaseEntity

{///

///主键Id///

public long Id { get; set; }///

///创建时间///

public DateTime CreateDateTime{get;set;}///

///修改时间///

public DateTime? UpdateDateTime { get; set; }///

///软删除标志///

public bool IsDelete { get; set; }///

///预留字段1///

public string ExtFiled1 { get; set; }///

///预留字段2///

public string ExtFiled2 { get; set; }

}///

///系统用户操作日志///

public classOperateLog : BaseEntity

{///

///一级菜单名///

public string LevelOneMenuName { get; set; }///

///二级菜单名///

public string LevelTwoMenuName { get; set; }///

///三级菜单名///

public string LevelThreeeMenuName { get; set; }///

///操作备注///

public string OperateRemark { get; set; }///

///操作人Id///

public long UserId { get; set; }///

///操作人姓名///

public string UserName { get; set; }///

///操作结果///

public string OperateResult { get; set; }///

///操作结果详情///

public string OperateResultInfo { get; set; }

}

public class OperateLogConfig : IEntityTypeConfiguration{public void Configure(EntityTypeBuilderbuilder)

{

builder.HasComment("系统用户操作日志表");

builder.Property(t=> t.Id).HasComment("主键Id");

builder.Property(t=> t.LevelOneMenuName).HasComment("一级菜单名").HasMaxLength(50);

builder.Property(t=> t.LevelTwoMenuName).HasComment("二级菜单名").HasMaxLength(50);

builder.Property(t=> t.LevelThreeeMenuName).HasComment("三级菜单名").HasMaxLength(50);

builder.Property(t=> t.OperateRemark).HasComment("操作备注").HasMaxLength(50);

builder.Property(t=> t.UserId).HasComment("操作人Id").HasMaxLength(50);

builder.Property(t=> t.UserName).HasComment("操作人姓名").HasMaxLength(50);

builder.Property(t=> t.OperateResult).HasComment("操作结果").HasMaxLength(50);

builder.Property(t=> t.OperateResultInfo).HasComment("操作结果详情").HasMaxLength(50);

builder.Property(t=> t.CreateDateTime).HasComment("创建时间");

builder.Property(t=> t.UpdateDateTime).HasComment("修改时间");

builder.Property(t=> t.IsDelete).HasComment("软删除标志 ,true表示删除,false表示未删除").HasDefaultValue(false);

builder.Property(t=> t.ExtFiled1).HasComment("预留扩展字段1").HasMaxLength(50);

builder.Property(t=> t.ExtFiled2).HasComment("预留扩展字段2").HasMaxLength(50);

}

}

5. 在Startup 文件中的ConfigureServices方法中, 配置Mysql 的连接服务

public voidConfigureServices(IServiceCollection services)

{var connection = "Server=localhost;database=omc;uid=root;port=3306;pwd=123321";

services.AddDbContext(options =>options.UseMySql(connection));

services.AddControllers();

}

6.  打开程序包管理控制台, 输入PM 命令,即可得到想要的结果

Add-Migration EFCore

该命令会在程序中自动生成所需的对应数据库的脚本文件,截图如下

f578b4aef5013b7797620cfce786650b.png

4a0271747dbc3107849d40928e19592b.png

update-database EFCore

则会执行上图中的Migrations中的程序文件,会在所连接的数据库中生成对应的表结构,截图如下

f5cc9382d4dd20eb590a3ac042950862.png

1ba59934d24def5b9c32eb873c299384.png

e6bbd71a8bee3c1b71404a48692ff843.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值