一個支持 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 ,字段注釋會從屬性的
Description
Attribute 中獲取 - 根據需要設置是否生成數據庫描述 sql
- 左側生成表字段信息,右側生成創建表的sql,生成的 Sql 僅供參考,請自行根據需要調整數據類型以及字段長度
- 根據已有的 Model 生成創建表的 sql ,字段注釋會從屬性的
-
Settings
- 修改默認數據庫連接字符串
- 修改默認數據庫類型
- 修改默認語言(1.1.0 版本需要重啟應用)
插件擴展
Packages
目前的 packages:
DbTool.Core
DbTool 用於擴展的接口定義,幫助類DbTool.DbProvider.MySql
DbTool 對於 MySql 的支持DbTool.DbProvider.SqlServer
DbTool 對於 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
目錄下