DbTool 是一個支持 CodeFirst/DbFirst/ModelFirst 的資料庫小工具,原本是基於 dotnet framework WinForm 實現的,在 1.1.0 版本更新中使用 dotnet core 3.1 基於 WPF 重寫了,並實現了一個簡單的基於插件模式開發模式並引入... ...
一個支持 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尾碼:表名的基礎上加的尾碼,預設為空
生成私有欄位,預設為
private int id1;false
,如果為false
則使用自動屬性的代碼風格,反之,使用傳統get;set;
風格代碼,如:
``` csharp
public int Id { get; set; } //自動屬性風格代碼
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
目錄下