采用的是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. vue传值(父子传值,非父子传值)

    vue组件传值,分为父子传值和非父子传值,父子传值又分为父传子和子传父. 组件之间的传值,实现了数据的联动,是从操作Dom到操作数据一个跳转性的突破,在学习vue双向绑定原理之后, 这种观念就应该继续 ...

  2. Java集合框架(java.util包)

    集合的概念: 是一种工具类,可以存储任意数量.任意类型的对象(所以后面需要用到泛型,以约束集合中元素的类型) 集合的作用: 1.在类的内部对属性进行组织 2.方便快速定位属性位置 3.某些集合接口,提 ...

  3. 使用gravatar生成头像

    avatar代表您在线的图像,当你与网站互动时,你的名字旁边会出现一张图片. Gravatar是一个全球通用的头像.你只需上传一次并创建自己的个人资料,然后当你加入任何支持Gravatar的网站时,你 ...

  4. C#实现文件Move操作和文件的Copy操作

    文件移动(Move)操作和文件的复制(Copy)是C#程式开发经常遇到的方法,根据传入的源文件地址和目标文件地址参数,实现对文件的操作.实现代码如下: Move操作代码: public static ...

  5. 倍增LCA模板2董博文版 伪代码

    Dfs(int rt){ f[][rt]; ;k<=;k++) f[k][rt]=f[k-][f[k-][rt]]; } int LCA(int x,int y){ if(Dp[x]<Dp ...

  6. java: integer number is too large

    今天想定义一个类常量,结果如下面那样定义,确报错了.error is: Integer number too large public static final Long STARTTIME = 14 ...

  7. 【JavaScript 基础知识】一篇关于 JavaScript 一些知识点的总结

    JavaScript 中基础数据类型  数据类型名称  数据类型说明 Undefined 只有一个值,即 undefined ,声明变量的初始值. Null 只有一个值,即 null ,表示空指针,  ...

  8. eclipse反编译插件 jadclipse jad

    eclipse常用反编译插件jadclipse.jad 1.下载jadclipse:net.sf.jadclipse_3.3.0.jar,放到eclipse-plugins 2.下载jad.exe,放 ...

  9. 理解setTimeout()

    之前在网上看了很多关于setTimeout的文章,但我感觉都只是点到为止,并没有较深入的去剖析,也可能是我脑袋瓜笨,不容易被点解.后面看了<你不知道的javascript-上卷>一书,决定 ...

  10. crawler 听课笔记 碎碎念 3 关于python的细枝末节的回顾复习

    和廖雪峰大神的教程学了几遍后,还是出现了许多不足,于是就做一些回顾,列出一些python的细节问题,有一些就提一下,如果发现不清楚的话 还请移步https://www.liaoxuefeng.com/ ...