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

1.  创建ASP.NET Core Web项目

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

Microsoft.EntityFrameworkCore

Microsoft.EntityFrameworkCore.Design

Microsoft.EntityFrameworkCore.Tool

Pomelo.EntityFrameworkCore.MySql

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

   public class DataContext : DbContext
{ public DbSet<OperateLog> OperateLog { get; set; } public DataContext(DbContextOptions<DataContext> options) : base(options)
{ } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
//optionsBuilder.UseMySql("Server=localhost;database=omc;uid=root;port=3306;pwd=123321");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// base.OnModelCreating(modelBuilder); //Model Mapping用这个
// modelBuilder.ApplyConfigurationsFromAssembly(typeof(DataContext).Assembly); //FluentAPI Mapping用这个
modelBuilder.ApplyConfigurationsFromAssembly(Assembly.GetExecutingAssembly()); }
}

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

    public class BaseEntity
{
/// <summary>
/// 主键Id
/// </summary>
public long Id { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateDateTime{get;set;}
/// <summary>
/// 修改时间
/// </summary>
public DateTime? UpdateDateTime { get; set; }
/// <summary>
/// 软删除标志
/// </summary>
public bool IsDelete { get; set; }
/// <summary>
/// 预留字段1
/// </summary>
public string ExtFiled1 { get; set; }
/// <summary>
/// 预留字段2
/// </summary>
public string ExtFiled2 { get; set; }
} /// <summary>
/// 系统用户操作日志
/// </summary>
public class OperateLog : BaseEntity
{
/// <summary>
/// 一级菜单名
/// </summary>
public string LevelOneMenuName { get; set; }
/// <summary>
/// 二级菜单名
/// </summary>
public string LevelTwoMenuName { get; set; }
/// <summary>
/// 三级菜单名
/// </summary>
public string LevelThreeeMenuName { get; set; }
/// <summary>
/// 操作备注
/// </summary>
public string OperateRemark { get; set; }
/// <summary>
/// 操作人Id
/// </summary>
public long UserId { get; set; }
/// <summary>
/// 操作人姓名
/// </summary>
public string UserName { get; set; }
/// <summary>
/// 操作结果
/// </summary>
public string OperateResult { get; set; }
/// <summary>
/// 操作结果详情
/// </summary>
public string OperateResultInfo { get; set; } }
  public class OperateLogConfig : IEntityTypeConfiguration<OperateLog>
{ public void Configure(EntityTypeBuilder<OperateLog> builder)
{
builder.HasComment("系统用户操作日志表");
builder.Property(t => t.Id).HasComment("主键Id"); builder.Property(t => t.LevelOneMenuName).HasComment("一级菜单名").HasMaxLength();
builder.Property(t => t.LevelTwoMenuName).HasComment("二级菜单名").HasMaxLength();
builder.Property(t => t.LevelThreeeMenuName).HasComment("三级菜单名").HasMaxLength();
builder.Property(t => t.OperateRemark).HasComment("操作备注").HasMaxLength();
builder.Property(t => t.UserId).HasComment("操作人Id").HasMaxLength();
builder.Property(t => t.UserName).HasComment("操作人姓名").HasMaxLength();
builder.Property(t => t.OperateResult).HasComment("操作结果").HasMaxLength();
builder.Property(t => t.OperateResultInfo).HasComment("操作结果详情").HasMaxLength(); 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();
builder.Property(t => t.ExtFiled2).HasComment("预留扩展字段2").HasMaxLength();
}
}

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

        public void ConfigureServices(IServiceCollection services)
{
var connection = "Server=localhost;database=omc;uid=root;port=3306;pwd=123321";
services.AddDbContext<DataContext>(options => options.UseMySql(connection));
services.AddControllers();
}

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

Add-Migration  EFCore   

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

update-database EFCore

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

 

用EFCore的 FluentAPI 方式生成MySql 带注释的数据库表结构的更多相关文章

  1. powerdesigner生成mysql带注释的ER图

    1.安装PowerDesigner的 参考 https://blog.csdn.net/sinat_34104446/article/details/79885141 2配置逆向工程 2.1新建模型p ...

  2. Erwin 生成 mysql 带注释(comment )的脚本

    Erwin设计数据库非常方便,有逻辑视图和物理视图,可以很方便的生成数据库文档和SQL 脚本.在使用过程中唯一不爽的地方是脚本不能生成comment.   在百度无数次无法解决下,又FQ谷歌,在一个日 ...

  3. PHP+MYSQL实现输出打印数据库表结构和输出表内容

    效果图1 <form id="form1" name="form1" action="2.php" method="get& ...

  4. 【工具篇】利用DBExportDoc V1.0 For MySQL自动生成数据库表结构文档

    对于DBA或开发来说,如何规范化你的数据库表结构文档是灰常之重要的一件事情.但是当你的库,你的表排山倒海滴多的时候,你就会很头疼了. 推荐一款工具DBExportDoc V1.0 For MySQL( ...

  5. 利用DBExportDoc V1.0 For MySQL自动生成数据库表结构文档

    对于DBA或开发来说,如何规范化你的数据库表结构文档是灰常之重要的一件事情.但是当你的库,你的表排山倒海滴多的时候,你就会很头疼了. 推荐一款工具DBExportDoc V1.0 For MySQL( ...

  6. 如何将excel 数据库表结构生成powerdesign物理模型

    Option Explicit Dim mdl ' the current model Set mdl = ActiveModel If (mdl Is Nothing) Then MsgBox &q ...

  7. MySQL 大数据量修改表结构问题

    前言: 在系统正常运作一定时间后,随着市场.产品汪的需求不断变更,比较大的一些表结构面临不得不增加字段的方式来扩充满足业务需求:  而 MySQL 在体量上了千万.亿级别数据的时候,Alter Tab ...

  8. MySQL导出数据库、数据库表结构、存储过程及函数【用】

    一.导出数据库 我的mysql安装目录是D:\Program Files\MySQL\MySQL Server 5.5\bin\,导出文件预计放在D:\sql\ 在mysql的安装目录执行命令: my ...

  9. Mybatis总结之如何自动生成数据库表结构

    一般情况下,用Mybatis的时候是先设计表结构再进行实体类以及映射文件编写的,特别是用代码生成器的时候. 但有时候不想用代码生成器,也不想定义表结构,那怎么办? 这个时候就会想到Hibernate, ...

随机推荐

  1. 2019牛客暑期多校第六场题解ABDJ

    A.Garbage Classification 传送门 题意:给你两个串,第一个串s由小写字母组成,第二个串t由dwh组成,长度为26,分别表示字母a到z代表的字符.现在要你判断: 如果字符串中‘h ...

  2. Java开发中的各种乱码问题

    乱码问题 其实解决乱码问题,就是保证所有的编码格式一致,就不会出现问题. 控制台乱码 修改idea的控制台格式 修改 idea.exe.vmoptions和idea64.exe.vmoptions 在 ...

  3. 【一起学源码-微服务】Eureka+Ribbon+Feign阶段性总结

    前言 想说的话 这里已经梳理完Eureka.Ribbon.Feign三大组件的基本原理了,今天做一个总结,里面会有一个比较详细的调用关系流程图. 说明 原创不易,如若转载 请标明来源! 博客地址:一枝 ...

  4. 【一起学源码-微服务】Hystrix 源码一:Hystrix基础原理与Demo搭建

    说明 原创不易,如若转载 请标明来源! 欢迎关注本人微信公众号:壹枝花算不算浪漫 更多内容也可查看本人博客:一枝花算不算浪漫 前言 前情回顾 上一个系列文章讲解了Feign的源码,主要是Feign动态 ...

  5. Could not find iPhone 6 simulator

    最近原来的老项目有点问题需要处理一下,运行启动命令,就报了如下错误,提示找不到iPhone 6 模拟器. react-native run-ios Owaiss-Mac:pdm owaisahmed$ ...

  6. Hive 这些基础知识,你忘记了吗?

    Hive 其实是一个客户端,类似于navcat.plsql 这种,不同的是Hive 是读取 HDFS 上的数据,作为离线查询使用,离线就意味着速度很慢,有可能跑一个任务需要几个小时甚至更长时间都有可能 ...

  7. Ansible playbooks常用模块案例操作

    打开git bash 连接ansible服务器,然后进入deploy用户 #ssh root@192.168.96.188 进入python3.6虚拟环境 #su - deploy #source . ...

  8. 2019CSP复赛游记

    Day 0 作为一个初三的小蒟蒻…… 什么算法都不会打…… 做一道LCA+生成树的图论题调了两个小时…… 明日裸考…… Day 1 Morning 买了两个士力架,带了一盒牛奶,准备在考场上食用(这个 ...

  9. 基于Bootstrap和Knockout.js的ASP.NET MVC开发实战

    之前在一家公司里用过Knockout,是easyui 和 Knockout结合 的.下面的这本应该不错. 目录 前言 第一部分入门指南 第1章MVC介绍 创建第一个项目 分析HomeControlle ...

  10. 简单实现Android手机“全局可调试”(ro.debuggable = 1)的方法【锤子坚果3】

    在Android真机上调试程序有一个前提,就是这个apk包必须有 debuggable=true 的属性才行.而除了自己开发的apk能够控制打包属性之外,其他的程序发行之后显然不会设这个值为 true ...