1. 程式人生 > >【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案(2)建立資料庫和資料模型

【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案(2)建立資料庫和資料模型

索引

簡述

我們建立一個數據庫然後生成資料模型,新增ADO.NET實體資料模型,這裡呢常用的有兩種方式,一種是DbFirst,一種是CodeFirst,為了簡便,我們使用DbFirst。有基礎的朋友可以使用CodeFirst,對專案沒有影響的。

專案準備

我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5

希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。

專案開始

一、建立資料庫 wkmvc_db

建立資料庫。。。咱就不多講了,可以T-SQL(方便移植),我就用最基本的來建立吧~~

二、我們建立一個使用者表 

我們建立一個使用者表,因為這個使用者表我打算是給後臺使用者使用的,也就是管理員表,所以我們叫做SYS_USER

我們給這個表新增一些欄位屬性

資料庫名:wkmvc_db 表名:SYS_USER
序號 列名 資料型別 長度 小數位 標識 主鍵 外來鍵 允許空 預設值 說明
1 ID int 4 0 主鍵ID
2 NAME nvarchar 50 0 真實姓名
3 ACCOUNT nvarchar 20 0 使用者帳號
4 PASSWORD nvarchar 1000 0 使用者密碼
5 ISCANLOGIN int 4 0 是否鎖定(0否1是)
6 SHOWORDER1 int 4 0 部門內的排序
7 SHOWORDER2 int 4 0 公司內的排序
8 PINYIN1 nvarchar 50 0 姓名全拼
9 PINYIN2 nvarchar 50 0 姓名首字元
10 FACE_IMG nvarchar 200 0 使用者頭像
11 LEVELS nvarchar 36 0 級別(對接SYS_CODE)
12 DPTID nvarchar 36 0 主部門ID,使用者所在的部門
13 CREATEPER nvarchar 36 0 建立者
14 CREATEDATE datetime 8 3 建立時間
15 UPDATEUSER nvarchar 36 0 修改者
16 UPDATEDATE datetime 8 3 修改時間
17 LastLoginIP nvarchar 50 0 最後一次登入IP

T-SQL:

USE [wkmvc_db]
GO
/****** Object:  Table [dbo].[SYS_USER]    Script Date: 2016/5/9 15:30:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[SYS_USER](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [NAME] [nvarchar](50) NULL,
    [ACCOUNT] [nvarchar](20) NULL,
    [PASSWORD] [nvarchar](1000) NULL,
    [ISCANLOGIN] [int] NULL,
    [SHOWORDER1] [int] NULL,
    [SHOWORDER2] [int] NULL,
    [PINYIN1] [nvarchar](50) NULL,
    [PINYIN2] [nvarchar](50) NULL,
    [FACE_IMG] [nvarchar](200) NULL,
    [LEVELS] [nvarchar](36) NULL,
    [DPTID] [nvarchar](36) NULL,
    [CREATEPER] [nvarchar](36) NULL,
    [CREATEDATE] [datetime] NULL,
    [UPDATEUSER] [nvarchar](36) NULL,
    [UPDATEDATE] [datetime] NULL,
    [LastLoginIP] [nvarchar](50) NULL,
 CONSTRAINT [PK_SYS_USER] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'主鍵ID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_USER', @level2type=N'COLUMN',@level2name=N'ID'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'真實姓名' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_USER', @level2type=N'COLUMN',@level2name=N'NAME'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'使用者帳號' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_USER', @level2type=N'COLUMN',@level2name=N'ACCOUNT'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'使用者密碼' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_USER', @level2type=N'COLUMN',@level2name=N'PASSWORD'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'是否鎖定(0否1是)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_USER', @level2type=N'COLUMN',@level2name=N'ISCANLOGIN'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'部門內的排序' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_USER', @level2type=N'COLUMN',@level2name=N'SHOWORDER1'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'公司內的排序' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_USER', @level2type=N'COLUMN',@level2name=N'SHOWORDER2'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'姓名全拼' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_USER', @level2type=N'COLUMN',@level2name=N'PINYIN1'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'姓名首字元' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_USER', @level2type=N'COLUMN',@level2name=N'PINYIN2'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'使用者頭像' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_USER', @level2type=N'COLUMN',@level2name=N'FACE_IMG'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'級別(對接SYS_CODE)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_USER', @level2type=N'COLUMN',@level2name=N'LEVELS'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'主部門ID,使用者所在的部門' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_USER', @level2type=N'COLUMN',@level2name=N'DPTID'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'建立者' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_USER', @level2type=N'COLUMN',@level2name=N'CREATEPER'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'建立時間' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_USER', @level2type=N'COLUMN',@level2name=N'CREATEDATE'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'修改者' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_USER', @level2type=N'COLUMN',@level2name=N'UPDATEUSER'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'修改時間' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_USER', @level2type=N'COLUMN',@level2name=N'UPDATEDATE'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'最後一次登入IP' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SYS_USER', @level2type=N'COLUMN',@level2name=N'LastLoginIP'
GO
View Code

然後,我們新建個登入使用者 sa_wkmvc 密碼 就123456 啦,並且新增使用者對映

安全性→登入名→新建登入名

二、新增ADO.NET實體資料模型 Sql_Wkdb

在我們的Domain中,我們新增一個ADO.NET實體資料模型 叫做Sql_Wkdb

右擊Domain→新增→ADO.NET實體資料模型 Sql_Wkdb

選擇來自資料庫的EF設計器(DbFirst)

下一步,然後點選新建連線,因為我是本地的資料庫,所以我的伺服器名稱我寫個.,選擇 使用SQL Server 身份驗證 ,並且選擇或輸入我們要連線的資料庫名稱

點選確定,然後我們更改一下 連線設定配置檔案,我們存為Entities

選擇版本

更改一下模型的名稱空間為Domain

OK,實體資料模型建立成功!

我們來新建個配置類 MyConfig.cs,用於資料庫連線字串的提取(上學的時候老師講的一般是在公共操作類DBHelper中定義const string strConnectionString = ConfigurationManager.ConnectionStrings["SqlConnectionString"].ConnectionString)

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Configuration;
  4 using System.Data;
  5 using System.Linq;
  6 using System.Text;
  7 
  8 namespace Domain
  9 {
 10     /// <summary>
 11     /// 資料庫連線字串提取操作
 12     /// 字串對應應用程式中配置檔案
 13     /// 模型對應Domain中的資料庫模型Context.cs建構函式
 14     /// </summary>
 15     public class MyConfig : Entities
 16     {
 17         /// <summary>
 18         /// 封裝EF實體模型,供Dao使用,
 19         /// </summary>
 20         public System.Data.Entity.DbContext db { get; private set; }
 21 
 22         public MyConfig()
 23         {
 24             //例項化EF資料上下文
 25             db = new Entities();//注:Entities()要修改成與EF上下文統一
 26         }
 27 
 28         #region 連線資料庫配置
 29         /// <summary>
 30         /// 資料庫連線字串
 31         /// </summary>
 32         public static string DefaultConnectionString = "";
 33         /// <summary>
 34         /// 通用資料庫連結物件配置
 35         /// </summary>
 36         public static IDbConnection DefaultConnection
 37         {
 38             get
 39             {
 40                 IDbConnection defaultConn = null;
 41                 //資料庫型別
 42                 string action = ConfigurationManager.AppSettings["daoType"];
 43                 switch (action)
 44                 {
 45                     //case "oracle":
 46                     //    defaultConn = new Oracle.ManagedDataAccess.Client.OracleConnection();
 47                     //    DefaultConnectionString = ConfigurationManager.ConnectionStrings["OracleConnectionString"].ConnectionString;
 48                     //    break;
 49                     case "mssql":
 50                         defaultConn = new System.Data.SqlClient.SqlConnection();
 51                         DefaultConnectionString = ConfigurationManager.ConnectionStrings["SqlConnectionString"].ConnectionString;
 52                         break;
 53                     default:
 54                         break;
 55                 }
 56                 return defaultConn;
 57             }
 58         }
 59         /// <summary>
 60         /// 構造資料庫連線字串 注:資料庫切換要修改
 61         /// </summary>
 62         public static string DataBaseConnectionString(string EntityName)
 63         {
 64             IDbConnection con = DefaultConnection;
 65             return EFConnectionStringModle(EntityName, DefaultConnectionString);
 66         }
 67         /// <summary>
 68         /// 構造EF使用資料庫連線字串
 69         /// </summary>
 70         /// <param name="EntityName">資料上下文壞境</param>
 71         /// <param name="DBsoure">資料字串</param>
 72         static string EFConnectionStringModle(string EntityName, string DBsoure)
 73         {
 74             return string.Concat("metadata=res://*/",
 75                 EntityName, ".csdl|res://*/",
 76                 EntityName, ".ssdl|res://*/",
 77                 EntityName, ".msl;provider=System.Data.SqlClient;provider connection string='",
 78                 DBsoure, "'");
 79 
 80         }
 81         #endregion
 82 
 83         #region SQL攔截器
 84         /// <summary>
 85         /// 配置EF執行SQL攔截器
 86         /// </summary>
 87         //public static void EFTracingConfig(log4net.ILog log4net)
 88         //{
 89         //    //註冊攔截器
 90         //    EFTracingProviderConfiguration.RegisterProvider();
 91         //    //SQL日誌
 92         //    log4net.ILog log = null;
 93         //    bool isdebug = (ConfigurationManager.AppSettings["isdebug"] == "true");
 94         //    if (isdebug)
 95         //    {
 96         //        log = log4net;
 97         //    }
 98         //    EFTracingProviderConfiguration.LogToLog4net = log;
 99         //}
100         #endregion
101 
102     }
103 }
View Code

Oralce的咱們暫時不用我註釋了

下一篇,我們就來建立個公共操作介面和實現類,還有Spring注入,有不太瞭解的提前預習一下~~ 再次感謝大家的關注,這個東西並不是一個很成熟的東西,所以,大家如果提出更好的解決方案或者其它問題,我會及時修改的。

相關推薦

無私分享入門精通ASP.NET MVC0開始一起框架專案2建立資料庫資料模型

索引 簡述 我們建立一個數據庫然後生成資料模型,新增ADO.NET實體資料模型,這裡呢常用的有兩種方式,一種是DbFirst,一種是CodeFirst,為了簡便,我們使用DbFirst。有基礎的朋友可以使用CodeFirst,對專案沒有影響的。 專案準備 我們用的工具是:VS 2013 + Sql

無私分享入門精通ASP.NET MVC0開始一起框架專案 14資料庫釋出專案

索引 簡述 總結一 整個系列其實還包括專案管理、考勤簽到、郵件、內部聊天等等,這個東西是做不完的,如果繼續還有新聞系統、靜態生成等等等等.... 其中,靜態頁生成在我的部落格中可以找到,三種方式: 第一種 就是類似網上的很多CMS一樣 採用標籤替換,但這種方式是不推薦的,特別是在我們.Net中,

無私分享入門精通ASP.NET MVC0開始一起框架專案 10部門管理崗位管理員工管理

1 USE [wkmvc_db] 2 GO 3 /****** Object: Table [dbo].[SYS_POST_USER] Script Date: 2016/6/20 16:28:44 ******/ 4 SET ANSI_NULLS ON 5 GO

無私分享入門精通ASP.NET MVC0開始一起框架專案 12程式與資料備份

索引 簡述 程式檔案備份與資料備份 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。 專案開始

無私分享入門精通ASP.NET MVC0開始一起框架專案 16原始碼分享登入功能以及UI資料庫倉儲原始碼分享

1 using Common; 2 using Service.IService; 3 using System; 4 using System.Collections.Generic; 5 using System.Linq; 6 using System.Web;

無私分享入門精通ASP.NET MVC0開始一起框架專案 15原始碼分享修改倉儲IRepositoryRepositoryBase

1 #region 獲取多條資料操作 2 3 /// <summary> 4 /// 返回IQueryable集合,延時載入資料 5 /// </summary> 6 /// &l

無私分享入門精通ASP.NET MVC0開始一起框架專案9 角色管理分配許可權

索引 簡述 今天我們來做角色的管理 和 角色許可權分配 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解

無私分享入門精通ASP.NET MVC0開始一起框架專案1搭建MVC環境 註冊區域

索引 簡述 從今天開始,我們從0開始搭建一個框架,並且完成一個任務管理系統的專案。這並不是什麼大專案,只是對於不熟悉MVC以及不熟悉面向介面開發和依賴注入的朋友們有所啟發,因為是從0開始,所以有些地方比較囉嗦,希望大家理解! 希望新手朋友們拋棄“拿來主義”,動手跟著一步一步的做,當做完這個框架和專案

無私分享入門精通ASP.NET MVC0開始一起框架專案6 控制器基類 主要登入使用者許可權認證日誌記錄等工作

索引 簡述 今天我們來寫一個控制器基類 主要做登入使用者、許可權認證、日誌記錄等工作 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,

無私分享入門精通ASP.NET MVC0開始一起框架專案8 許可權管理自定義許可權擴充套件許可權

索引 簡述 今天我們來做許可權的管理,這篇比較多 希望新手朋友慢慢消化 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的

無私分享入門精通ASP.NET MVC0開始一起框架專案 13客戶管理

索引 簡述 簡單的客戶管理 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。 專案開始 一、資料

無私分享入門精通ASP.NET MVC0開始一起框架專案3公共基礎資料操作類 RepositoryBase

索引 簡述 今天我們寫一個基礎資料的操作類,如果裡面有大家不理解的地方,可採取兩種方式,第一:提出來,第二:會用就行。這個類呢我一般不去修改它,因為基礎操作類,大家也可以直接拷貝到自己的專案中。 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大

無私分享入門精通ASP.NET MVC0開始一起框架專案 11檔案管理

索引 簡述 檔案管理,這個比較雞肋 但是有些方法 大家可以參考下 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,

無私分享入門精通ASP.NET MVC0開始一起框架專案4對前面的一些問題彙總總結

索引 簡述 今天我們對前3章的問題總個彙總,對一些東西做個簡單的總結,相比大家到第3章發現編輯器報了很多錯誤了,不要擔心 那是正常的,因為有很多類庫我還沒有釋出。 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個

無私分享入門精通ASP.NET MVC0開始一起框架專案7.2 模組管理模組的新增修改刪除

索引 簡述 今天我們來做模組管理的 新增、修改、刪除 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了

無私分享入門精通ASP.NET MVC0開始一起框架專案5.3 登入功能的實現豐富資料建立關聯

1 USE [wkmvc_db] 2 GO 3 /****** Object: Table [dbo].[SYS_CODE] Script Date: 2016/5/17 9:30:01 ******/ 4 SET ANSI_NULLS ON 5 GO 6 SET

無私分享入門精通ASP.NET MVC0開始一起框架專案5.4 登入功能的實現建立與登入使用者相關的介面實現類

索引 簡述 今天我們建立幾個與登入使用者相關的資料表的介面和實現類 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了

無私分享入門精通ASP.NET MVC0開始一起框架專案5.5 登入功能的實現完善登入功能

索引 簡述 今天我們來完善我們的登入功能 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。 專案開

無私分享入門精通ASP.NET MVC0開始一起框架專案5.2 登入功能的實現介面注入log4net的使用

索引 簡述 前兩天事情比較多,耽誤更新了,希望大家多多包涵,今天我們繼續做我們的登入功能 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行

無私分享入門精通ASP.NET MVC0開始一起框架專案5.1 登入功能的實現開始接觸Spring IOCDI

索引 簡述 今天我們做登入,今天的東西比較多,用到了Spring的IOC和DI、介面的使用、驗證等,希望大家多多討論 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些