zoukankan      html  css  js  c++  java
  • 【无私分享:从入门到精通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

  • 相关阅读:
    linux下启动和关闭网卡命令及DHCP上网
    python 编码问题
    paddlepaddle
    Convolutional Neural Network Architectures for Matching Natural Language Sentences
    deep learning RNN
    Learning Structured Representation for Text Classification via Reinforcement Learning 学习笔记
    Python IO密集型任务、计算密集型任务,以及多线程、多进程
    EM 算法最好的解释
    tensorflow 调参过程
    tensorflow 学习纪录(持续更新)
  • 原文地址:https://www.cnblogs.com/yuangang/p/5474212.html
Copyright © 2011-2022 走看看