一個支持 CodeFirst/DbFirst/ModelFirst 的資料庫小工具

来源:https://www.cnblogs.com/weihanli/archive/2020/02/15/powerful-database-tool-for-dotnet.html
-Advertisement-
Play Games

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

ModelFirst

CodeFirst

Settings

功能說明

  1. DbFirst

    1. 導出資料庫表到Model

      1. 設置資料庫連接字元串,並連接資料庫
      2. 設置導出 Model 選項
      3. 選擇要導出 Model 的資料庫表
      4. 導出 Model
    Model 設置選項說明:
    • model的命名空間:生成的 model 所在的命名空間,預設為 Models,不可為空,為空則使用預設值Models
    • model首碼:表名的基礎上加的首碼,預設為空
    • model尾碼:表名的基礎上加的尾碼,預設為空
    • 生成私有欄位,預設為 false,如果為false則使用自動屬性的代碼風格,反之,使用傳統 get;set; 風格代碼,如:
      ``` csharp
      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的名稱由首碼和表名稱及尾碼拼接而成,如果表名以 tabtab_tbltbl_這些開頭,則會先把這些移除掉再拼接,可以通過自定義插件擴展

    1. 導出資料庫表到Excel

      1. 設置資料庫連接字元串,並連接資料庫
      2. 選擇要導出到 Excel 的資料庫表
      3. 導出到 Excel
  2. ModelFirst

    1. 可以手動填寫信息或者先選擇 Excel 導入
    2. 只生成 Sql 語句,不會自動在資料庫里創建表,根據生成的 Sql 語句再創建表
  3. CodeFirst

    1. 根據已有的 Model 生成創建表的 sql ,欄位註釋會從屬性的 Description Attribute 中獲取
    2. 根據需要設置是否生成資料庫描述 sql
    3. 左側生成表欄位信息,右側生成創建表的sql,生成的 Sql 僅供參考,請自行根據需要調整數據類型以及欄位長度
  4. Settings

    1. 修改預設資料庫連接字元串
    2. 修改預設資料庫類型
    3. 修改預設語言(1.1.0 版本需要重啟應用)

插件擴展

Packages

目前的 packages:

  • DbTool.Core DbTool 用於擴展的介面定義,幫助類
  • DbTool.DbProvider.MySql DbTool 對於 MySql 的支持
  • DbTool.DbProvider.SqlServer DbTool 對於 SqlServer 的支持

擴展方式

  1. 擴展資料庫支持,實現 IDbProvider
  2. 擴展導出方式,實現 IDbDocExporter,當前支持導出 Excel
  3. 擴展 Model 代碼生成方式,實現 IModelCodeGenerator,根據資料庫表信息生成 Model
  4. 擴展 Model 名稱表名稱轉化,實現 IModelNameConverter,也可以繼承 DefaultModelNameConverter,改寫某一個實現

自定義擴展使用方式

新建一個類庫項目,引用 DbTool.Core,並實現相應的介面,實現對應的邏輯,將生成的 dll 放在 DbToolplugins 目錄下即可

舉個例子,自定義一個 Markdown Exporter 插件

  1. 新建一個項目 DbTool.DbDocExporter.Markdown,並引用 DbTool.Core
  2. 添加 MarkdownDbDocExporter 類並實現 IDbDocExporter 介面
  3. dotnet build 生成 dll,並將生成的 dll 放在 plugins 目錄下

Reference


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 為什麼要用函數 現在python屆發生了一個大事件,len方法突然不能直接用了。。。 然後現在有一個需求,讓你計算'hello world'的長度,你怎麼計算? 這個需求對於現在的你其實不難,我們一起來寫一下。 s1 = "hello world" length = 0 for i in s1: l ...
  • 慕課網-悟空-玩轉Java併發工具,精通JUC,成為併發多面手-筆記 微雲:https://share.weiyun.com/81aa12bb98016e200add31fb8e191cdf百度網盤:鏈接:https://pan.baidu.com/s/1IiClTkQwFJgBL2NqlptKbA ...
  • 一、前言 從學單片機開始鼓搗C語言,到現在為了學CV鼓搗Python,期間在CSDN、簡書、博客園和github這些地方得到了很多幫助,所以也想把自己做的一些小東西分享給大家,希望能幫助到別人。記錄人生的第一篇博客,mark。 二、圖像檢測步驟 1. 讀取兩張圖片 第一張是需要檢測的小物體,第二章圖 ...
  • 多態的體現 父類的引用指向了自己的子類對象。 父類的引用也可以接受自己的子類對象。 代碼體現 運行結果 多態的前提 必須是類與類之間有關係。要麼是繼承關係,要麼實現。 存在覆寫關係。 多態利弊 利處 多態的出現大大地提高了程式的拓展性。 弊端 提高了拓展性,但是只能使用父類的引用訪問父類中的成員,不 ...
  • 今天給大家翻譯一篇由ASP.NET首席開發工程師 "James Newton King" 前幾天發表的一篇博客,文中帶來了一個實驗性的產品gRPC Web。大家可以點擊文末的討論帖進行相關反饋。我會在文章末尾給出原文鏈接。全部譯文如下: 我很高興宣佈通過.NET對gRPC Web進行實驗性支持。gR ...
  • .NET Core WebAPI post參數傳遞時後端的接收方式 1. 實體類 2. dynamic動態類型 3. JObject參數 4. 單值參數(字元串參數) A.前端Post請求代碼 B.後端接收參數方式 1. 實體類 實體類是比較簡單的一種傳參方式,使用頻率非常高。 1. 添加實體類 2 ...
  • 通過使用變換(transform),許多繪圖任務將更趨簡單;變換是通過不加通告地切換形狀或元素使用的坐標系統來改變形狀或元素繪製方式的對象。在WPF中,變換由繼承自System.Windows.Media.Transform抽象類的類表示。下表列出了這些類。 表 變換類 從技術角度看,所有變換都使用 ...
  • 概述 上兩篇(asp.net core 3.x 身份驗證-1涉及到的概念、asp.net core 3.x 身份驗證-2啟動階段的配置)介紹了身份驗證相關概念以及啟動階段的配置,本篇以cookie身份驗證為例來大致說明asp.net core中的身份驗證原理。如果我們的應用只考慮瀏覽器使用,且不考慮 ...
一周排行
    -Advertisement-
    Play Games
  • 1. 說明 /* Performs operations on System.String instances that contain file or directory path information. These operations are performed in a cross-pla ...
  • 視頻地址:【WebApi+Vue3從0到1搭建《許可權管理系統》系列視頻:搭建JWT系統鑒權-嗶哩嗶哩】 https://b23.tv/R6cOcDO qq群:801913255 一、在appsettings.json中設置鑒權屬性 /*jwt鑒權*/ "JwtSetting": { "Issuer" ...
  • 引言 集成測試可在包含應用支持基礎結構(如資料庫、文件系統和網路)的級別上確保應用組件功能正常。 ASP.NET Core 通過將單元測試框架與測試 Web 主機和記憶體中測試伺服器結合使用來支持集成測試。 簡介 集成測試與單元測試相比,能夠在更廣泛的級別上評估應用的組件,確認多個組件一起工作以生成預 ...
  • 在.NET Emit編程中,我們探討了運算操作指令的重要性和應用。這些指令包括各種數學運算、位操作和比較操作,能夠在動態生成的代碼中實現對數據的處理和操作。通過這些指令,開發人員可以靈活地進行算術運算、邏輯運算和比較操作,從而實現各種複雜的演算法和邏輯......本篇之後,將進入第七部分:實戰項目 ...
  • 前言 多表頭表格是一個常見的業務需求,然而WPF中卻沒有預設實現這個功能,得益於WPF強大的控制項模板設計,我們可以通過修改控制項模板的方式自己實現它。 一、需求分析 下圖為一個典型的統計表格,統計1-12月的數據。 此時我們有一個需求,需要將月份按季度劃分,以便能夠直觀地看到季度統計數據,以下為該需求 ...
  • 如何將 ASP.NET Core MVC 項目的視圖分離到另一個項目 在當下這個年代 SPA 已是主流,人們早已忘記了 MVC 以及 Razor 的故事。但是在某些場景下 SSR 還是有意想不到效果。比如某些靜態頁面,比如追求首屏載入速度的時候。最近在項目中回歸傳統效果還是不錯。 有的時候我們希望將 ...
  • System.AggregateException: 發生一個或多個錯誤。 > Microsoft.WebTools.Shared.Exceptions.WebToolsException: 生成失敗。檢查輸出視窗瞭解更多詳細信息。 內部異常堆棧跟蹤的結尾 > (內部異常 #0) Microsoft ...
  • 引言 在上一章節我們實戰了在Asp.Net Core中的項目實戰,這一章節講解一下如何測試Asp.Net Core的中間件。 TestServer 還記得我們在集成測試中提供的TestServer嗎? TestServer 是由 Microsoft.AspNetCore.TestHost 包提供的。 ...
  • 在發現結果為真的WHEN子句時,CASE表達式的真假值判斷會終止,剩餘的WHEN子句會被忽略: CASE WHEN col_1 IN ('a', 'b') THEN '第一' WHEN col_1 IN ('a') THEN '第二' ELSE '其他' END 註意: 統一各分支返回的數據類型. ...
  • 在C#編程世界中,語法的精妙之處往往體現在那些看似微小卻極具影響力的符號與結構之中。其中,“_ =” 這一組合突然出現還真不知道什麼意思。本文將深入剖析“_ =” 的含義、工作原理及其在實際編程中的廣泛應用,揭示其作為C#語法奇兵的重要角色。 一、下劃線 _:神秘的棄元符號 下劃線 _ 在C#中並非 ...