一個支持 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
- https://github.com/WeihanLi/DbTool
- https://github.com/WeihanLi/DbTool/tree/packages
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/63606.html
標籤:其他
上一篇:【WPF學習】第四十二章 透明
下一篇:【WPF學習】第四十一章 變換
