• 【无私分享:从入门到精通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

  • 相关阅读:
    iOS image.size大小实际输出的值跟图片像素的关系
    iOS 记录蓝牙传输相关进制转换/字节转换/NSData转换/大小端转换
    Objective-C 中Socket常用转换机制(NSData,NSString,int,Uint8,Uint16,Uint32,byte[])
    ios-如何将UIColor RGB颜色转换为uint32_t值
    iOS 多国语言判断
    android 通过WIFI调试和adb指令推送文件到安卓设备
    iOS ViewController跳转界面的几种方法简单总结
    整理汇总能够提升文字工作效率的工具app分享给大家
    js 把字符串转换成数组,数组去重后再转成字符串
    我和朋友写的《Go语言从基础到中台微服务实战开发》已出版在京东,当当上可以购买了
  • 原文地址:https://www.cnblogs.com/yuangang/p/5474212.html
Copyright © 2020-2023  润新知