【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做項目(2)創建數據庫和數據模型


索引

【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做項目 目錄索引

簡述

我們創建一個數據庫然后生成數據模型,添加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注入,有不太了解的提前預習一下~~ 再次感謝大家的關注,這個東西並不是一個很成熟的東西,所以,大家如果提出更好的解決方案或者其它問題,我會及時修改的。

 

原創文章 轉載請尊重勞動成果 http://yuangang.cnblogs.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM