一個支持 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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...