索引
【無私分享:從入門到精通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
我們給這個表添加一些字段屬性
|
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
然后,我們新建個登錄用戶 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 }
Oralce的咱們暫時不用我注釋了
下一篇,我們就來創建個公共操作接口和實現類,還有Spring注入,有不太了解的提前預習一下~~ 再次感謝大家的關注,這個東西並不是一個很成熟的東西,所以,大家如果提出更好的解決方案或者其它問題,我會及時修改的。
原創文章 轉載請尊重勞動成果 http://yuangang.cnblogs.com