使用.NET开发的数据库小工具 DbTool
數據庫小工具 DbTool
Intro
DbTool 一個支持 DbFirst、ModelFirst 和 CodeFirst 的數據庫小工具。
DbFirst 是根據數據庫中的表信息生成代碼中的 Model,以及生成數據表結構文檔
ModelFirst 是根據數據表信息或者數據表結構文檔生成創建數據庫的腳本
CodeFirst 是指根據 model 代碼生成數據庫表結構信息以及創建數據表的 SQL 腳本
Features
1.5.0 版本新增加了數據庫 PostgreSql 的支持,這也是支持 PostgreSql 的第一個版本,應該會有一些問題,如果有遇到問題,歡迎提 issue 反饋哈
除此之外,新版本對于擴展性方面做了一些改善和增強,增加了更多的擴展點
擴展數據庫支持,實現 IDbProvider,實現自己的數據庫邏輯或者增加其他數據庫的支持
擴展文檔導出支持,實現 IDbDocExporter,將數據庫表信息導出到文檔,默認支持了 Excel 導出,可以自己擴展其他的導出方式
擴展文檔導入支持,實現 IDbDocImporter 從數據庫文檔中獲取數據庫表信息,默認從 Excel 導入也可以自己擴展其他導入方式
擴展 Model 代碼生成方式,實現 IModelCodeGenerator,根據數據庫表信息生成代碼 Model,默認支持 C# 代碼生成,也可以實現其他代碼的生成
擴展從 Model 代碼中獲取數據表信息,實現 IModelCodeExtractor,默認從 C# 代碼中獲取數據表信息,也可以實現從其他代碼中獲取數據庫表信息
擴展 Model 名稱表名稱轉化,實現 IModelNameConverter,也可以繼承 DefaultModelNameConverter,改寫某一個實現,實現一些特殊的名稱轉換,比如 TBL_Notice => Notice
插件開發指南
新建一個類庫項目,引用 DbTool.Core,并實現相應的接口,實現對應的邏輯,將生成的 dll 放在 DbTool 的 plugins 目錄下即可
舉個例子,自定義一個 Markdown Exporter 插件
新建一個項目 DbTool.DbDocExporter.Markdown,并引用 DbTool.Core
添加 MarkdownDbDocExporter 類并實現 IDbDocExporter 接口
dotnet build 生成 dll,并將生成的 dll 放在 plugins 目錄下
插件化實現方式
通過掃描 plugins 目錄,加載 dll 插件到默認的 AssemblyLoadContext 中,并注冊需要的服務
var?pluginDir?=?ApplicationHelper.MapPath("plugins"); if?(Directory.Exists(pluginDir)) {//?load?pluginsvar?plugins?=?Directory.GetFiles(pluginDir).Where(_?=>?_.EndsWith(".dll",?StringComparison.OrdinalIgnoreCase)).ToArray();if?(plugins.Length?>?0){var?assemblies?=?plugins.Select(AssemblyLoadContext.Default.LoadFromAssemblyPath).ToArray();var?exportedTypes?=?assemblies.Select(x?=>?x.GetExportedTypes()).SelectMany(t?=>?t).Where(t?=>?!t.IsInterface?&&?!t.IsAbstract).ToArray();var?pluginTypes?=?exportedTypes.Where(t?=>?interfaces.Any(i?=>?i.IsAssignableFrom(t))).ToArray();foreach?(var?type?in?pluginTypes){services.RegisterTypeAsImplementedInterfaces(type);}//?load?service?modulesservices.RegisterAssemblyModules(assemblies);} }對于 UI 界面,會動態添加一些 Button 并綁定相應的處理方法,實現代碼大致如下:
var?codeGenerators?=?DependencyResolver.ResolveServices<IModelCodeGenerator>(); foreach?(var?generator?in?codeGenerators) {var?button?=?new?Button(){Content?=?$"{_localizer["Export"]}?{generator.CodeType}?Code",Tag?=?generator,MaxWidth?=?180,Margin?=?new?Thickness(4)};button.Click?+=?ExportModel_Click;ModelCodeGeneratorsPanel.Children.Add(button); }More
更多實現細節以及功能可以自己嘗試一下,看看源碼,除了開發插件,你也可以直接修改源代碼來實現自己想要的功能哈~
References
https://github.com/WeihanLi/DbTool/blob/packages/README.md
https://github.com/WeihanLi/DbTool
https://github.com/WeihanLi/DbTool/blob/wpf-dev/src/DbTool/App.xaml.cs
https://github.com/WeihanLi/DbTool/blob/wpf-dev/src/DbTool/MainWindow.xaml.cs
總結
以上是生活随笔為你收集整理的使用.NET开发的数据库小工具 DbTool的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么 IEnumerable 没有提供
- 下一篇: 牛气!.NET5电商平台轻松承接10亿G