DB First

  1. static IFreeSql fsql = new FreeSql.FreeSqlBuilder()
  2. .UseConnectionString(FreeSql.DataType.MySql,
  3. "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;Max pool size=10"
  4. )
  5. .Build(); //请务必定义成 Singleton 单例模式

获取所有数据库

  1. var t1 = fsql.DbFirst.GetDatabases();
  2. //返回字符串数组, ["cccddd", "test"]

获取指定数据库的表信息

  1. var t2 = fsql.DbFirst.GetTablesByDatabase(fsql.DbFirst.GetDatabases()[0]);
  2. //返回包括表、列详情、主键、唯一键、索引、外键、备注等等
  3. var t3 = fsql.DbFirst.GetTableByName("table1");
  4. //返回表的列详情、主键、唯一键、索引、备注等等

.NET Core CLI(推荐使用)

代码生成器FreeSql.Generator,是FreeSql的代码生成器,可生成实体类,支持将数据库实体动态生成实体,默认有二个模板,基于Razor,可指定自定义模板

  • dotnet-tool安装 FreeSql.Generator
    1. dotnet tool install -g FreeSql.Generator
  • 更新FreeSql.Generator
    1. dotnet tool update -g FreeSql.Generator

新建目录,在地址栏输入 cmd 快速打开命令窗口,输入命令:

  1. FreeSql.Generator --help

命令行工具生成实体类极大好处,后续再次生成覆盖操作等于一键完成,并且支持 Mac/Linux 平台。

详细解读:生成器是如何实现的?

  1. C:\WINDOWS\system32>FreeSql.Generator --help
  2. ____ ____ __
  3. / __/ ____ ___ ___ / __/ ___ _ / /
  4. / _/ / __// -_)/ -_) _\ \ / _ `/ / /
  5. /_/ /_/ \__/ \__/ /___/ \_, / /_/
  6. /_/
  7. # Github # https://github.com/2881099/FreeSql v2.0.105
  8. FreeSql 快速生成数据库的实体类
  9. 更新工具:dotnet tool update -g FreeSql.Generator
  10. # 快速开始 #
  11. > FreeSql.Generator -Razor 1 -NameOptions 0,0,0,0 -NameSpace MyProject -DB "MySql,Data Source=127.0.0.1;..."
  12. -Razor 1 * 选择模板:实体类+特性
  13. -Razor 2 * 选择模板:实体类+特性+导航属性
  14. -Razor "d:\diy.cshtml" * 自定义模板文件
  15. -NameOptions * 4个布尔值对应:
  16. 首字母大写
  17. 首字母大写,其他小写
  18. 全部小写
  19. 下划线转驼峰
  20. -NameSpace * 命名空间
  21. -DB "MySql,data source=127.0.0.1;port=3306;user id=root;password=root;initial catalog=数据库;charset=utf8;sslmode=none;max pool size=2"
  22. -DB "SqlServer,data source=.;integrated security=True;initial catalog=数据库;pooling=true;max pool size=2"
  23. -DB "PostgreSQL,host=192.168.164.10;port=5432;username=postgres;password=123456;database=数据库;pooling=true;maximum pool size=2"
  24. -DB "Oracle,user id=user1;password=123456;data source=//127.0.0.1:1521/XE;pooling=true;max pool size=2"
  25. -DB "Sqlite,data source=document.db"
  26. -DB "Firebird,database=localhost:D:\fbdata\EXAMPLES.fdb;user=sysdba;password=123456;max pool size=2"
  27. -DB "Dameng,server=127.0.0.1;port=5236;user id=2user;password=123456789;database=2user;poolsize=2"
  28. -DB "KingbaseES,server=127.0.0.1;port=54321;uid=USER2;pwd=123456789;database=数据库"
  29. -DB "ShenTong,host=192.168.164.10;port=2003;database=数据库;username=SYSDBA;password=szoscar55;maxpoolsize=2"
  30. * Dameng(达梦数据库)、KingbaseES(人大金仓数据库)、ShenTong(神舟通用数据库)
  31. -Filter Table+View+StoreProcedure
  32. 默认生成:表+视图+存储过程
  33. 如果不想生成视图和存储过程 -Filter View+StoreProcedure
  34. -Match 表名或正则表达式,只生成匹配的表,如:dbo\.TB_.+
  35. -FileName 文件名,默认:{name}.cs
  36. -Output 保存路径,默认为当前 shell 所在目录
  37. 推荐在实体类目录创建 gen.bat,双击它重新所有实体类

常用选项

选项 说明
-Razor 选择模板:实体类+特性 -Razor 1 /实体类+特性+导航属性 -Razor 1/自定义模板文件 -Razor "d:\diy.cshtml"
-NameOptions 生成的实体命名规范,应只设置某一个为参数为1,其中4个布尔值对应:首字母大写/首字母大写,其他小写/全部小写/下划线转驼(-NameOptions 0,0,0,1)
-NameSpace 命名空间
-DB 看下文中的-DB参数
-Filter Table+View+StoreProcedure( 默认生成:表+视图+存储过程), 如果不想生成视图和存储过程 -Filter View+StoreProcedure
-Match 表名或正则表达式,只生成匹配的表,如:dbo.TB_.+
-FileName 文件名,默认:{name}.cs
-Output 推荐在实体类目录创建 gen.bat,双击它重新所有实体类

-DB参数

  1. -DB "MySql,data source=127.0.0.1;port=3306;user id=root;password=root;initial catalog=数据库;charset=utf8;sslmode=none;max pool size=2"
  2. -DB "SqlServer,data source=.;integrated security=True;initial catalog=数据库;pooling=true;max pool size=2"
  3. -DB "PostgreSQL,host=192.168.164.10;port=5432;username=postgres;password=123456;database=数据库;pooling=true;maximum pool size=2"
  4. -DB "Oracle,user id=user1;password=123456;data source=//127.0.0.1:1521/XE;pooling=true;max pool size=2"
  5. -DB "Sqlite,data source=document.db"
  6. -DB "Firebird,database=localhost:D:\fbdata\EXAMPLES.fdb;user=sysdba;password=123456;max pool size=2"
  7. -DB "Dameng,server=127.0.0.1;port=5236;user id=2user;password=123456789;database=2user;poolsize=2"
  8. -DB "KingbaseES,server=127.0.0.1;port=54321;uid=USER2;pwd=123456789;database=数据库"
  9. -DB "ShenTong,host=192.168.164.10;port=2003;database=数据库;username=SYSDBA;password=szoscar55;maxpoolsize=2"

示例

FreeSql.Generator -Razor 1 -NameOptions 0,0,0,1 -NameSpace LinCms.Core.Entities -DB “MySql,Data Source=127.0.0.1;Port=3306;User ID=root;Password=123456;Initial Catalog=lincms;Charset=utf8;SslMode=none;Max pool size=2”

  • 数据库表名是下划线,字段也是下划线方式。
  • -Razor 指定 第一个模板
  • -NameOptions 0,0,0,1 最后一个1,代表 下划线转驼峰,满足C#命名规则
  • -NameSpace 指定了命名空间 LinCms.Core.Entities
  • -DB 就是数据库的相关配置
  • mysql 本地地址 127.0.0.1 3306端口 用户名 root 密码123456 数据库 lin-cms
  • -Match book 这样就能只生成book,支持正则表达式,如 -Math linuser 就会生成以lin_user开头的表。如dbo.TB.+,会生成以TB开头的表。即只生成匹配的表

安装 Winform 生成器(已停止更新)

源码地址:FreeSql.Tools

作者:mypeng1985 开发了两个版本

image

image