上篇(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 |