上篇(asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发1-准备工作)文章讲解了开发过程中的准备工作,主要创建了项目数据库及项目,本文主要讲解项目M层的实现,M层这里讲的主要是通过Codefirst方式实现的。
1 2 3 4 5 6 7 8 9 10 11 12 | CREATE TABLE [dbo].[SYS_USER]([ID] [nvarchar](36) NOT NULL,--ID[USERNAME] [nvarchar](20) NULL,--用户名[REALNAME] [nvarchar](30) NULL,--真实姓名[USERPASS] [nvarchar](32) NULL,--用户密码[RULEID] [nvarchar](36) NULL,--角色ID[RULENAME] [nvarchar](60) 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] |
映射成Model类为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public partial class SYS_USER{public string ID { get; set; }[Required(ErrorMessage = "{0}不能为空")][DisplayName("用户名")]public string USERNAME { get; set; }[Required(ErrorMessage = "{0}不能为空")][DisplayName("真实姓名")]public string REALNAME { get; set; }[Required(ErrorMessage = "{0}不能为空")][DisplayName("用户密码")]public string USERPASS { get; set; }[Required(ErrorMessage = "{0}不能为空")][DisplayName("所属角色")]public string RULEID { get; set; }[DisplayName("所属角色")]public string RULENAME { get; set; }} |
类名跟表明对应,属性名跟字段名对应。到这一般实际中表跟类是没有关系的,还需进一步配置。
通过EntityTypeConfiguration可以设置类跟数据库里面哪个表做对应,本步好像可以不做也行,默认有对应关系,默认对应关系中数据库表后面好像得有个s,具体对应代码如下:
1 2 3 4 5 6 7 | public class SYS_USERMapping : EntityTypeConfiguration<SYS_USER>{public SYS_USERMapping(){ToTable("dbo.SYS_USER");}} |
不难看出ToTable("dbo.SYS_USER")这里指定了对应数据库里面的哪个表格。
以上两步介绍的必须DbContext做个关联才行,codefirst中所有对数据库表的增删改查都必须通过DbContext提供的方法去做。具体代码如下:
1 2 3 4 5 6 7 8 9 | public class SiteDataBaseDbContent : DbContext{protected override void OnModelCreating(DbModelBuilder modelBuilder){modelBuilder.Configurations.Add(new SYS_USERMapping());base.OnModelCreating(modelBuilder);}public DbSet<SYS_USER> SYS_USER { get; set; }} |
1 | modelBuilder.Configurations.Add(new SYS_USERMapping());跟第二条对应。 |
数据库链接在web.config中实现就可以了,链接名称跟public class SiteDataBaseDbContent : DbContext这里的SiteDataBaseDbContent 名称一致就行,名称一致了codefirst会自己去找这个链接,代码如下:
1 2 3 | <connectionStrings><add name="SiteDataBaseDbContent" connectionString="Data Source=.;Initial Catalog=SiteDataBase;Persist Security Info=True;User ID=sa;Password=t145879" providerName="System.Data.SqlClient" /></connectionStrings> |
M层的相关知识简单的就这些了,能满足一般项目需求。
M层的主要工作量就在于写数据表对应类,有简单的方法不用自己去写,步骤如下:
在解决方案资源管理器的Models文件夹右键点击,选择添加-》新建项菜单,如下图:
打开新建对话框,左侧选择数据菜单,右侧选择ADO.NET实体数据模型,然后点击添加按钮,如下图:
然后选择从数据库生成,然后点击下一步,如下图:
然后点击新建链接按钮,根据你数据库配置情况建立数据库链接,如下图:
数据库链接创建成功后点击下一步按钮,然后选择全部表格,如下图:
最后点击完成按钮即可,此时所有表对应的类都已经生成,如下图:
说明:这里的Model1.edmx只是临时使用文件,M层创建完后删除就行。
在解决方案资源管理器的Models文件夹右键点击,选择添加-》类菜单,如下图:
创建一个名为DatabaseModels的类文件。然后将Model1.tt下面的类都考入DatabaseModels文件中,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | namespace SiteDataBase.Models{public partial class SYS_USER{public string ID { get; set; }public string USERNAME { get; set; }public string REALNAME { get; set; }public string USERPASS { get; set; }public string RULEID { get; set; }public string RULENAME { get; set; }}public partial class SYS_ROLE{public string ID { get; set; }public string NAME { get; set; }public string ROLEDESC { get; set; }public string SHOWORDER { get; set; }public string LOCKSTATE { get; set; }public string POWERLIST { get; set; }public Nullable<System.DateTime> CREATETIME { get; set; }public string CREATEIP { get; set; }public string CREATEUSER { get; set; }public Nullable<System.DateTime> MODIFYTIME { get; set; }public string MODIFYIP { get; set; }public string MODIFYUSER { get; set; }}} |
上面代码只是列举了两个,将其他代码也必须考入DatabaseModels文件中,第二步是根据类创建数据库表跟类的对应关系类:EntityAnnotations.cs,具体代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | namespace SiteDataBase.Models{public class SYS_ROLEMapping : EntityTypeConfiguration<SYS_ROLE>{public SYS_ROLEMapping(){ToTable("dbo.SYS_ROLE");}}public class SYS_USERMapping : EntityTypeConfiguration<SYS_USER>{public SYS_USERMapping(){ToTable("dbo.SYS_USER");}}} |
同理所有表格都必须做对应。
1 2 3 4 5 6 7 8 9 10 11 12 知识推荐
我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8
不良信息举报平台
互联网安全管理备案
Copyright 2023 www.wodecom.cn All Rights Reserved |