(3)建立上下文對象並使用SqlSugar生成實體類

上一篇:(2)CM.Api項目創建Json包裝類與數據庫操作接口

  • 右鍵解決方案,新建解決方案文件夾,取名爲工具
    在這裏插入圖片描述
  • 在工具文件夾下繼續新建控制檯項目ModelClassBuilder
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 右鍵管理安裝NuGet程序包,安裝 SqlSugar, 中途會有兩個彈框(忘記截圖了)依次選擇“確定”、“我接受”
    在這裏插入圖片描述
    點擊安裝
    在這裏插入圖片描述
  • 在 ModelClassBuilder下添加類DbContext
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 先退出 Microsoft Visual Studio, 如下圖所示,我用的是navicat數據庫管理工具,建立一個新的連接,信息如下(密碼是root),然後建立名爲 dotnetcms 的數據庫,運行dotnetcms.sql :鏈接: https://pan.baidu.com/s/1UovG79Ubbnc4JwmCH_93aw 提取碼: sw77
    在這裏插入圖片描述
    dotnetcms.sql 文件代碼:
/*
 Navicat Premium Data Transfer

 Source Server         : 127.0.0.1
 Source Server Type    : MySQL
 Source Server Version : 50729
 Source Host           : 127.0.0.1:3306
 Source Schema         : dotnetcms

 Target Server Type    : MySQL
 Target Server Version : 50729
 File Encoding         : 65001

 Date: 10/05/2020 16:39:34
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for cm_api
-- ----------------------------
DROP TABLE IF EXISTS `cm_api`;
CREATE TABLE `cm_api`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '接口名稱',
  `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '#' COMMENT '接口斷點',
  `methods` varchar(5) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '00000' COMMENT '可調方法',
  `orderNo` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '\'99\'' COMMENT '同級排序號',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of cm_api
-- ----------------------------

-- ----------------------------
-- Table structure for cm_article
-- ----------------------------
DROP TABLE IF EXISTS `cm_article`;
CREATE TABLE `cm_article`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文章標題',
  `columnId` bigint(20) NOT NULL COMMENT '所屬欄目',
  `body` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '內容文本',
  `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文章鏈接',
  `fileUrl` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件網址',
  `bigPic` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '大圖網址',
  `smallPic` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '小圖網址',
  `wxPic` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '列表圖網址',
  `state` int(11) NULL DEFAULT NULL COMMENT '文章狀態',
  `orderNo` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '同級排序',
  `editorId` bigint(20) NULL DEFAULT NULL COMMENT '編輯ID',
  `editor` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '編輯姓名',
  `editTime` datetime(0) NULL DEFAULT NULL COMMENT '上傳時間',
  `publishDate` datetime(0) NULL DEFAULT NULL COMMENT '發佈日期',
  `creatorId` bigint(20) NOT NULL COMMENT '創建人ID',
  `creator` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '創建人姓名',
  `createTime` datetime(0) NOT NULL COMMENT '創建人時間',
  `checkerId` bigint(20) NULL DEFAULT NULL COMMENT '檢查人ID',
  `checker` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '檢查人姓名',
  `checkerTime` datetime(0) NULL DEFAULT NULL COMMENT '檢查人時間',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of cm_article
-- ----------------------------
INSERT INTO `cm_article` VALUES (1, '測試文章', 1, NULL, '#', '#', '#', '#', '#', 0, '1', 1, '張三', '2020-03-25 15:49:14', '2020-03-26 15:49:27', 1, '劉美工', '2020-03-12 15:49:46', 1, '王老師', '2020-03-20 15:50:03');

-- ----------------------------
-- Table structure for cm_column
-- ----------------------------
DROP TABLE IF EXISTS `cm_column`;
CREATE TABLE `cm_column`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '欄目名稱',
  `parentId` bigint(20) NOT NULL COMMENT '上級欄目ID',
  `orderNo` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '\'99\'' COMMENT '同級排序',
  PRIMARY KEY (`id`, `name`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of cm_column
-- ----------------------------
INSERT INTO `cm_column` VALUES (1, '前端技術', 0, '\'99\'');
INSERT INTO `cm_column` VALUES (2, '後端技術', 0, '\'99\'');
INSERT INTO `cm_column` VALUES (3, 'jQuery', 1, '\'99\'');
INSERT INTO `cm_column` VALUES (4, 'JavaScript', 1, '\'99\'');
INSERT INTO `cm_column` VALUES (5, 'LayUI', 1, '\'99\'');
INSERT INTO `cm_column` VALUES (6, 'EF', 2, '\'99\'');
INSERT INTO `cm_column` VALUES (7, 'Linq', 2, '\'99\'');

-- ----------------------------
-- Table structure for cm_member
-- ----------------------------
DROP TABLE IF EXISTS `cm_member`;
CREATE TABLE `cm_member`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `wx_nick` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '微信暱稱',
  `wx_icon` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '微信頭像',
  `wx_openId` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '公衆號openId',
  `mp_openId` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '小程序openId',
  `unionId` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `phone` varchar(15) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手機號碼',
  `tags` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '會員標籤',
  `lastLoginedTime` datetime(0) NULL DEFAULT NULL COMMENT '上次登錄時間',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of cm_member
-- ----------------------------

-- ----------------------------
-- Table structure for cm_menu
-- ----------------------------
DROP TABLE IF EXISTS `cm_menu`;
CREATE TABLE `cm_menu`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '菜單名稱',
  `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '#' COMMENT '菜單網址',
  `icon` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '#' COMMENT '菜單圖標',
  `parentId` bigint(20) NULL DEFAULT 0 COMMENT '上級菜單ID',
  `orderNo` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '\'99\'' COMMENT '同級排序號',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 16 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of cm_menu
-- ----------------------------
INSERT INTO `cm_menu` VALUES (1, '管理後臺', 'welcome.html', '', 0, '\'01\'');
INSERT INTO `cm_menu` VALUES (2, '系統設置', 'welcome.html', '#', 1, '\'01\'');
INSERT INTO `cm_menu` VALUES (3, '菜單設置', '/pc/base/menMgr.html', '#', 2, '\'01\'');
INSERT INTO `cm_menu` VALUES (4, '功能接口', '/pc/base/apiMgr.html', '#', 2, '\'02\'');
INSERT INTO `cm_menu` VALUES (5, '用戶管理', 'welcome.html', '#', 1, '\'02\'');
INSERT INTO `cm_menu` VALUES (6, '系統角色', '/pc/user/roleMgr.html', '#', 5, '\'01\'');
INSERT INTO `cm_menu` VALUES (7, '角色菜單', '/pc/user/roleMenuMgr.html', '#', 5, '\'02\'');
INSERT INTO `cm_menu` VALUES (8, '賬號管理', '/pc/user/accountMgr.html', '#', 5, '\'03\'');
INSERT INTO `cm_menu` VALUES (9, '會員管理', '/pc/user/memberMgr.html', '#', 5, '\'04\'');
INSERT INTO `cm_menu` VALUES (10, '用戶日誌', '/pc/user/userLog.html', '#', 5, '\'05\'');
INSERT INTO `cm_menu` VALUES (11, '內容管理', 'welcome.html', '#', 1, '\'03\'');
INSERT INTO `cm_menu` VALUES (12, '欄目檔案', '/pc/content/columnMgr.html', '#', 11, '\'01\'');
INSERT INTO `cm_menu` VALUES (13, '欄目授權', '/pc/content/roleColumnMgr.html', '#', 11, '\'02\'');
INSERT INTO `cm_menu` VALUES (14, '文章管理', '/pc/content/articleMgr.html', '#', 11, '\'99\'');

-- ----------------------------
-- Table structure for cm_role
-- ----------------------------
DROP TABLE IF EXISTS `cm_role`;
CREATE TABLE `cm_role`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色姓名',
  `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '角色描述',
  PRIMARY KEY (`id`, `name`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of cm_role
-- ----------------------------
INSERT INTO `cm_role` VALUES (1, '超級管理員', '');
INSERT INTO `cm_role` VALUES (2, '測試管理', '');
INSERT INTO `cm_role` VALUES (3, '開發者', '');

-- ----------------------------
-- Table structure for cm_role_column
-- ----------------------------
DROP TABLE IF EXISTS `cm_role_column`;
CREATE TABLE `cm_role_column`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `role` bigint(20) NOT NULL,
  `columnId` bigint(20) NOT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Fixed;

-- ----------------------------
-- Records of cm_role_column
-- ----------------------------

-- ----------------------------
-- Table structure for cm_role_menu
-- ----------------------------
DROP TABLE IF EXISTS `cm_role_menu`;
CREATE TABLE `cm_role_menu`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `roleId` bigint(20) NOT NULL,
  `menuId` bigint(20) NOT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 23 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Fixed;

-- ----------------------------
-- Records of cm_role_menu
-- ----------------------------
INSERT INTO `cm_role_menu` VALUES (1, 1, 1);
INSERT INTO `cm_role_menu` VALUES (2, 1, 2);
INSERT INTO `cm_role_menu` VALUES (3, 1, 3);
INSERT INTO `cm_role_menu` VALUES (4, 1, 4);
INSERT INTO `cm_role_menu` VALUES (5, 1, 5);
INSERT INTO `cm_role_menu` VALUES (6, 1, 6);
INSERT INTO `cm_role_menu` VALUES (7, 1, 7);
INSERT INTO `cm_role_menu` VALUES (8, 1, 8);
INSERT INTO `cm_role_menu` VALUES (9, 1, 9);
INSERT INTO `cm_role_menu` VALUES (10, 1, 10);
INSERT INTO `cm_role_menu` VALUES (11, 1, 11);
INSERT INTO `cm_role_menu` VALUES (12, 1, 12);
INSERT INTO `cm_role_menu` VALUES (13, 1, 13);
INSERT INTO `cm_role_menu` VALUES (14, 1, 14);
INSERT INTO `cm_role_menu` VALUES (15, 2, 1);
INSERT INTO `cm_role_menu` VALUES (16, 2, 11);
INSERT INTO `cm_role_menu` VALUES (17, 2, 12);
INSERT INTO `cm_role_menu` VALUES (18, 2, 13);
INSERT INTO `cm_role_menu` VALUES (19, 3, 1);
INSERT INTO `cm_role_menu` VALUES (20, 3, 2);
INSERT INTO `cm_role_menu` VALUES (21, 3, 3);
INSERT INTO `cm_role_menu` VALUES (22, 3, 4);

-- ----------------------------
-- Table structure for cm_user
-- ----------------------------
DROP TABLE IF EXISTS `cm_user`;
CREATE TABLE `cm_user`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `userAcc` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用戶賬號',
  `userPwd` varchar(150) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用戶口令',
  `userName` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用戶姓名',
  `phone` varchar(15) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '電話號碼',
  `disabled` tinyint(4) NOT NULL DEFAULT 0 COMMENT '禁用?',
  `lastLoginedTime` datetime(0) NULL DEFAULT NULL COMMENT '最近登錄時間',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of cm_user
-- ----------------------------
INSERT INTO `cm_user` VALUES (1, 'admin', '123456', '張三', '13566001122', 0, NULL);
INSERT INTO `cm_user` VALUES (2, 'test', '123456', '李四', '13899001122', 0, NULL);
INSERT INTO `cm_user` VALUES (3, 'dev', '123456', '張開發', '13011223344', 0, NULL);

-- ----------------------------
-- Table structure for cm_user_log
-- ----------------------------
DROP TABLE IF EXISTS `cm_user_log`;
CREATE TABLE `cm_user_log`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `userId` bigint(20) NOT NULL,
  `action` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `actionTime` datetime(0) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of cm_user_log
-- ----------------------------

-- ----------------------------
-- Table structure for cm_user_role
-- ----------------------------
DROP TABLE IF EXISTS `cm_user_role`;
CREATE TABLE `cm_user_role`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `userId` bigint(20) NOT NULL,
  `roleId` bigint(20) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 23 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Fixed;

-- ----------------------------
-- Records of cm_user_role
-- ----------------------------
INSERT INTO `cm_user_role` VALUES (19, 1, 1);
INSERT INTO `cm_user_role` VALUES (20, 2, 2);
INSERT INTO `cm_user_role` VALUES (21, 3, 2);
INSERT INTO `cm_user_role` VALUES (22, 3, 3);

SET FOREIGN_KEY_CHECKS = 1;

在這裏插入圖片描述

  • 再回到 Visual Studio 設置DbContext.cs與數據庫的連接,填相關信息
    在這裏插入圖片描述
    DbContext.cs 代碼
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Text;

namespace ModelClassBuilder
{
    public class DbContext<T> where T : class, new()
    {
        public DbContext()
        {
            Db = new SqlSugarClient(new ConnectionConfig()
            {
                ConnectionString = "server=127.0.0.1;uid=root;pwd=root;database=dotnetcms",
                DbType = DbType.MySql,
                InitKeyType = InitKeyType.Attribute,//從特性讀取主鍵和自增列信息
                IsAutoCloseConnection = true,//開啓自動釋放模式和EF原理一樣我就不多解釋了

            });
        }
        //注意:不能寫成靜態的
        public SqlSugarClient Db;//用來處理事務多表查詢和複雜的操作

    }
}

  • 建立好上下文DbContext之後,就可以在主程序 Programs.cs 中進行相關操作,下面進行數據表導出的操作
    在這裏插入圖片描述
using System;

namespace ModelClassBuilder
{
    class Program
    {
        static void Main(string[] args)
        {
            DbContext<object> ctx = new DbContext<object>();

            // 通過上下文對象,將數據庫裏面的數據表生成到 D:\\Visual Studio\\cms_entity_code 下,所屬命名空間爲 CM.Models
            ctx.Db.DbFirst.Where(SqlSugar.DbObjectType.Table).CreateClassFile("D:\\Visual Studio\\cms_entity_code", "CM.Models");
        }
    }
}

  • 生成(或者重新生成 ModelClassBuilder)
    在這裏插入圖片描述
  • 生成後運行結果如圖
    在這裏插入圖片描述
  • 再點擊調試 – 啓動新實例,運行結果如下
    在這裏插入圖片描述
    在這裏插入圖片描述
    在相應的文件夾下生成了相應實體類
    在這裏插入圖片描述
  • 這些實體類與數據庫的表是一一對應的,將這些複製黏貼到 CM.Models下
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章