上一篇:(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下