技术 思绪 摘录 旅行
一个MYSQL服务,管理了多个库,每个库里面又有多张表,每个表由无数个字段组成,一行数据的一个字段,是我们数据的最小单元,那么这些信息肯定存储在MYSQL服务的系统表里面,本文因为DBFirst反向工程而想到这个的实现原理,EFCore3.1反向工程一句命令,能将数据库生成我们想要的表实体类,那么是怎么实现的,原理是什么?这篇博文可能能告诉你一点东西。

一、获取MYSQL服务所有的数据库。

SELECT SCHEMA_NAME FROM information_schema.SCHEMATA

二、获取指定数据库里面的所有表信息

SELECT * FROM information_schema.tables WHERE table_schema='{database}' AND table_type= 'base table'; //table_schema:就是你的库名;table_type:就是数据类型 [base table]是表,[view]是视图

TABLE_NAME:表名称

TABLE_COMMENT:表备注

三、获取表结构信息

获取指定表的:SELECT * FROM information_schema.`COLUMNS` where TABLE_SCHEMA = '数据库名称' and TABLE_NAME = '表名称';
获取所有表结构:SELECT * FROM information_schema.`COLUMNS` where TABLE_SCHEMA = '数据库名称'

TABLE_NAME:所属表名称

COLUMN_NAME:字段名

DATA_TYPE:字段类型

CHARACTER_MAXIMUM_LENGTH:列的最大长度(这列只有在数据类型为char | varchar 时才有意义)

COLUMN_DEFAULT:列的默认值

Column_KEY:列上的索引类型 主键-->PRI  | 唯一索引 -->UNI  一般索引 -->MUL

COLUMN_COMMENT:备注

COLUMN_TYPE: 字段类型


这些信息能干啥,最终可以让你自己实现EFCore的反向工程的功能。

image.png

看下最终的表结构

image.png

和EFCore3.1反向工程生成的类一样。

CarsonIT 微信扫码关注公众号 策略、创意、技术

留下您的脚步

 

最近评论

查看更多>>

精选推荐

阅读排行

友情打赏

请打开您的微信,扫一扫