一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具
一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具
Intro
DbTool 是一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具,原本是基于 dotnet framework WinForm 实现的,在 1.1.0 版本更新中使用 dotnet core 3.1 基于 WPF 重写了,并实现了一个简单的基于插件模式开发模式并引入了多语言的基础支持。
数据库当前支持 SqlServer 和 MySql,可以自己扩展其他类型数据库。
可以利用这个小工具生成数据库表对应的 Model,并且会判断数据表列是否可以为空,可以为空的情况下会使用可空的数据类型,如 int? , DateTime? ,如果数据库中有列描述信息,也会生成在属性名称上添加列描述的注释,支持导出多个表;可以导出到Excel,可以根据Excel字段文档生成Sql,数据库表误删除又没有备份的时候就很有帮助了,而且支持反向的根据生成的Model去生成创建数据库表的Sql(供参考)。
基本功能
功能一览




功能说明
DbFirst
导出数据库表到Model
- 设置数据库连接字符串,并连接数据库
- 设置导出 Model 选项
- 选择要导出 Model 的数据库表
- 导出 Model
Model 设置选项说明:
- model的命名空间:生成的 model 所在的命名空间,默认为 Models,不可为空,为空则使用默认值Models
- model前缀:表名的基础上加的前缀,默认为空
- model后缀:表名的基础上加的后缀,默认为空
- 生成私有字段,默认为
false,如果为false则使用自动属性的代码风格,反之,使用传统get;set;风格代码,如:public int Id { get; set; } //自动属性风格代码 private int id1;
public int Id1 { get{ return id1; } set { id1 = value; } } //传统get;set风格代码
- 生成 Description Attribute,默认值为
true,如果为true则会在属性字段上生成一个[Description]的Attribute,如果为false则不生成,效果如下:/// <summary>用户名</summary>
[Description("用户名")]
public string UserName { get;set; }
- 生成 Model 名称的规则说明:生成的Model的名称由前缀和表名称及后缀拼接而成,如果表名以
tab或tab_或tbl或tbl_这些开头,则会先把这些移除掉再拼接,可以通过自定义插件扩展
导出数据库表到Excel
- 设置数据库连接字符串,并连接数据库
- 选择要导出到 Excel 的数据库表
- 导出到 Excel
ModelFirst
- 可以手动填写信息或者先选择 Excel 导入
- 只生成 Sql 语句,不会自动在数据库里创建表,根据生成的 Sql 语句再创建表
CodeFirst
- 根据已有的 Model 生成创建表的 sql ,字段注释会从属性的
DescriptionAttribute 中获取 - 根据需要设置是否生成数据库描述 sql
- 左侧生成表字段信息,右侧生成创建表的sql,生成的 Sql 仅供参考,请自行根据需要调整数据类型以及字段长度
- 根据已有的 Model 生成创建表的 sql ,字段注释会从属性的
Settings
- 修改默认数据库连接字符串
- 修改默认数据库类型
- 修改默认语言(1.1.0 版本需要重启应用)
插件扩展
Packages
目前的 packages:
DbTool.CoreDbTool 用于扩展的接口定义,帮助类DbTool.DbProvider.MySqlDbTool 对于 MySql 的支持DbTool.DbProvider.SqlServerDbTool 对于 SqlServer 的支持
扩展方式
- 扩展数据库支持,实现
IDbProvider - 扩展导出方式,实现
IDbDocExporter,当前支持导出Excel - 扩展 Model 代码生成方式,实现
IModelCodeGenerator,根据数据库表信息生成 Model - 扩展 Model 名称表名称转化,实现
IModelNameConverter,也可以继承DefaultModelNameConverter,改写某一个实现
自定义扩展使用方式
新建一个类库项目,引用 DbTool.Core,并实现相应的接口,实现对应的逻辑,将生成的 dll 放在 DbTool 的 plugins 目录下即可
举个例子,自定义一个 Markdown Exporter 插件
- 新建一个项目
DbTool.DbDocExporter.Markdown,并引用DbTool.Core - 添加
MarkdownDbDocExporter类并实现IDbDocExporter接口 dotnet build生成 dll,并将生成的 dll 放在plugins目录下



Reference
一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具的更多相关文章
- 一个支持DbFirst、ModelFirst和CodeFirst的数据库小工具DbTool
DbTool 一个支持DbFirst.ModelFirst和CodeFirst的数据库工具. 简介 这是一个针对 SqlServer 数据库和 C# 开发语言的小工具,可以利用这个小工具生成数据库表对 ...
- 介绍一个开源的在线管理SQLServer的小工具--SQLEntMan
近来有许多人问起SQL在线管理的问题,遂将以前用过的一个开源SQL 在线管理工具修改了一下,并分享. 看下效果图: 原项目的地址:http://sourceforge.net/projects/asp ...
- ruby利用Zip Gem写一个简单的压缩和解压的小工具
在UNIX下的我们怎么会沦落到用ruby写压缩和解压工具呢?直接上shell啊!但是请允许本猫这次可耻的用ruby来玩玩吧!其实ruby GEM中有很多压缩解压包,我选的是Zip,也许是因为名字符合K ...
- 【游戏开发】Excel表格批量转换成CSV的小工具
一.前言 在工作的过程中,我们有时可能会面临将Excel表格转换成CSV格式文件的需求.这尤其在游戏开发中体现的最为明显,策划的数据文档大多是一些Excel表格,且不说这些表格在游戏中读取的速度,但就 ...
- 这些小工具让你的Android 开发更高效
在做Android 开发过程中,会遇到一些小的问题.尽管自己动手也能解决.可是有了一些小工具,解决这些问题就得心应手了,今天就为大家推荐一下Android 开发遇到的小工具,来让你的开发更高效. Vy ...
- spring MVC +freemarker + easyui 实现sql查询和执行小工具总结
项目中,有时候线下不能方便的连接项目中的数据源时刻,大部分的问题定位和处理都会存在难度,有时候,一个小工具就能实时的查询和执行当前对应的数据源的库.下面,就本人在项目中实际开发使用的小工具,实时的介绍 ...
- 利用ncurses库开发终端工具箱(1)—— ToDoList小工具开发
准备工作 腾讯云服务器(Ubuntu),C++编程语言 由于想输出界面中包含中文,所以安装库 libncursesw5,依次输入下面三行命令 sudo apt-get install libncurs ...
- 开源一个IE下获取XPath小工具,支持32/64位
背景是曾经友情支持了测试组一小段时间,发现他们使用selenium做页面的自动化测试,需要用到XPath,但IE下没有获取XPath的工具,只能在Firefox和chrome下获取,步骤还比较麻烦.而 ...
- SSDB 一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis.
SSDB 一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis. 特性 替代 Redis 数据库, Redis 的 100 倍容量 LevelDB 网络支持, 使用 C/C++ ...
随机推荐
- 「Luogu P3395」路障 解题报告
点开有惊喜 其实是题面 这D1T1给的很有面子! 我居然做的来! 从左上角走到右上角 然后n<=1000 所以果断放弃DFS,选择BFS 思路还是一样的BFS 证明: 走到一个点的时间越早越好( ...
- docker-none
禁用容器的网络连接 如果要完全禁用容器上的网络堆栈,可以--network none在启动容器时使用该标志.在容器内,仅创建环回设备.以下示例说明了这一点. 创建容器. $ docker run -- ...
- surging 社区版本支持.net core 3.1
简介 surging 经过两年多的研发,微服务引擎已经略有雏形,也承蒙各位的厚爱, GitHub上收获了将近2800星,fork 811,付费用户企业也有十几家,还有咨询培训, 在2020年,我们将依 ...
- linux下安装mysql5.7.25详细教程
前言 最近项目上线,开始给用户测试了.搞下来好多台服务器,自然要装一个mysql的服务器.想想广大博友应该都会遇到如何装mysql的问题,就此分享,给大家一个安装指南.供大家以后安装的时候,提高效率, ...
- acmPush模块示例demo
感谢论坛版主 马浩川 的分享. 模块介绍: 阿里移动推送(Alibaba Cloud Mobile Push)是基于大数据的移动智能推送服务,帮助App快速集成移动推送的功能,在实现高效.精确.实时 ...
- 【PCIE-4】---PCIE中部分概念或问题总结(很基础很重要)
前面三小节,介绍了PCIE的基本知识和概念,以及扫描流程.在不求甚解的情况下,我想各位小伙伴应该对PCIE有了个宏观的认识,OK,那么本章我们在之前的基础上,再单独把一些概念和更深层次的问题摘出来具体 ...
- Linux安装python和更新pip
一.安装python 1.安装依赖包 1).安装gcc 通过gcc --version 查看,若没有则安装gcc yum -y install gcc 2).安装其他依赖包 yum -y instal ...
- asp.net生成店铺推广二维码,二维码中间加logo(源码)
二维条码比一维条码记载数据量更多,二维码条码是一种高密度.高信息含量的便携式数据文件,是实现证件及卡片等大容量.高可靠性信息自动存储.携带并可用机器自动识读的理想手段.而且可以记载更复杂的数据,比如图 ...
- kafka 中 zookeeper 具体是做什么的?
zookeeper 是 kafka 不可分割的一部分,可见其重要程度,所以我们有必要了解一下 zookeeper 在 kafka 中的具体工作内容. 而且,这也是面试时经常问的. zookeeper ...
- 2020年十大OA办公系统排行榜
最近几年办公信息化的不断发展,走向千家万户(企业),从刚开始的大型公司,政府企业到现在中小企业的加入,市场更加的庞大,产业前进很好,在协同办公这片市场中,有哪些公司独领风骚? 泛微OA:(www. ...