asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发2-Model层建立
来源:互联网 发布:mac地址修改器 编辑:程序博客网 时间:2024/05/17 17:42
上篇(asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发1-准备工作)文章讲解了开发过程中的准备工作,主要创建了项目数据库及项目,本文主要讲解项目M层的实现,M层这里讲的主要是通过Codefirst方式实现的。
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类为:
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,具体对应代码如下:
public
class
SYS_USERMapping : EntityTypeConfiguration<SYS_USER>
{
public
SYS_USERMapping()
{
ToTable(
"dbo.SYS_USER"
);
}
}
不难看出ToTable("dbo.SYS_USER")这里指定了对应数据库里面的哪个表格。
以上两步介绍的必须DbContext做个关联才行,codefirst中所有对数据库表的增删改查都必须通过DbContext提供的方法去做。具体代码如下:
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
; }
}
modelBuilder.Configurations.Add(
new
SYS_USERMapping());跟第二条对应。
数据库链接在web.config中实现就可以了,链接名称跟public class SiteDataBaseDbContent : DbContext这里的SiteDataBaseDbContent 名称一致就行,名称一致了codefirst会自己去找这个链接,代码如下:
<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文件中,代码如下:
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,具体代码如下:
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"
);
}
}
}
同理所有表格都必须做对应。
public
class
SiteDataBaseDbContent : DbContext
{
protected
override
void
OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(
new
SITE_ARTICLEMapping());
modelBuilder.Configurations.Add(
new
SITE_COLUMNMapping());
modelBuilder.Configurations.Add(
new
SITE_PROJECTMapping());
modelBuilder.Configurations.Add(
new
SYS_DICTIONARYMapping());
modelBuilder.Configurations.Add(
new
SYS_INFOMATIONMapping());
modelBuilder.Configurations.Add(
new
SYS_LOGMapping());
modelBuilder.Configurations.Add(
new
SYS_MENUMapping());
modelBuilder.Configurations.Add(
new
SYS_ROLEMapping());
modelBuilder.Configurations.Add(
new
SYS_USERMapping());
modelBuilder.Configurations.Add(
new
FRIENDLY_LINKMapping());
base
.OnModelCreating(modelBuilder);
}
public
DbSet<FRIENDLY_LINK> FRIENDLY_LINK {
get
;
set
; }
public
DbSet<SITE_ARTICLE> SITE_ARTICLE {
get
;
set
; }
public
DbSet<SITE_COLUMN> SITE_COLUMN {
get
;
set
; }
public
DbSet<SITE_PROJECT> SITE_PROJECT {
get
;
set
; }
public
DbSet<SYS_DICTIONARY> SYS_DICTIONARY {
get
;
set
; }
public
DbSet<SYS_INFOMATION> SYS_INFOMATION {
get
;
set
; }
public
DbSet<SYS_LOG> SYS_LOG {
get
;
set
; }
public
DbSet<SYS_MENU> SYS_MENU {
get
;
set
; }
public
DbSet<SYS_ROLE> SYS_ROLE {
get
;
set
; }
public
DbSet<SYS_USER> SYS_USER {
get
;
set
; }
}
<connectionStrings>
<add name=
"DefaultConnection"
providerName=
"System.Data.SqlClient"
connectionString=
"Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-SiteDataBase-20170902172943;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-SiteDataBase-20170902172943.mdf"
/>
<add name=
"SiteDataBaseDbContent"
connectionString=
"Data Source=.;Initial Catalog=SiteDataBase;Persist Security Info=True;User ID=sa;Password=t145879"
providerName=
"System.Data.SqlClient"
/>
</connectionStrings>
至此项目的M层创建完成,还需要进一步进行修改,具体修改知识介绍如下:
.net mvc中前端输入label提示及输入验证都是在M层实现的。
[DisplayName("新闻标题")]
public string TITLE { get; set; }
Model类中可以添加的验证标记:
1. 必填字段
[Required(ErrorMessage = "{0}不能为空")]
public string FirstName { get; set; }
2. 字段长度
至多n位:
[StringLength(160)]
public string FirstName { get; set; }
要求至少n位:
[StringLength(160, MinimumLength=3)]
public string FirstName { get; set; }
3. 正则验证
[RegularExpression(@”[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}”)]
public string Email { get; set; }
4. 范围
[Range(35,44)]
public int Age { get; set; }
小数的情况:
[Range(typeof(decimal), “0.00”, “49.99”)]
public decimal Price { get; set; }
5. 服务端参与的验证
[Remote(“CheckUserName”, “Account”)]
public string UserName { get; set; }
然后在AccountController里指定一个CheckUserName方法:
public
JsonResult CheckUserName(
string
username)
{
var result = Membership.FindUsersByName(username).Count == 0;
return
Json(result, JsonRequestBehavior.AllowGet);
}
6. 比较
[RegularExpression(@”[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}”)]
public string Email { get; set; }
[Compare(“Email”)]
public string EmailConfirm { get; set; }
7. 自定义错误消息
正则:
[RegularExpression(@”[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}”, ErrorMessage=”Email doesn’t look like a valid email address.”)]
public string Email { get; set; }
普通文本:
[Required(ErrorMessage=”Your last name is required”)]
[StringLength(160, ErrorMessage=”Your last name is too long”)]
public string LastName { get; set; }
占位符:
[Required(ErrorMessage=”Your {0} is required.”)]
[StringLength(160, ErrorMessage=”{0} is too long.”)]
public string LastName { get; set; }
数字:"^[0-9]*$"。
n位的数字:"^\d{n}$"。
至少n位的数字:"^\d{n,}$"。
m~n位的数字:。"^\d{m,n}$"
零和非零开头的数字:"^(0|[1-9][0-9]*)$"。
有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。
有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。
非零的正整数:"^\+?[1-9][0-9]*$"。
非零的负整数:"^\-[1-9][]0-9"*$。
长度为3的字符:"^.{3}$"。
由26个英文字母组成的字符串:"^[A-Za-z]+$"。
由26个大写英文字母组成的字符串:"^[A-Z]+$"。
由26个小写英文字母组成的字符串:"^[a-z]+$"。
由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。
由数字、26个英文字母或者下划线组成的字符串:"^\w+$"。
验证用户密码:"^[a-zA-Z]\w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。
验证是否含有^%&’,;=?$\"等字符:"[^%&’,;=?$\x22]+"。
只能输入汉字:"^[\u4e00-\u9fa5]{0,}$"
验证Email地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。
验证InternetURL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。
验证电话号码:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正确格式为:"XXX-XXXXXXX"、"XXXX- XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。
验证身份证号(15位或18位数字):"^\d{15}|\d{18}$"。
验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。
验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。
至此本文完毕
点击下载Model层代码
技术交流QQ:806693619
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发2-Model层建立
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发1-准备工作
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发4- 后台模板html页面创建
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发
- Easyui + asp.net mvc + sqlite 开发教程
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之预告篇
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之数据篇
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建项目
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之登录窗口
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之用户管理(2)
- 使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之用户管理(2)
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(999)-如何使用这个系统来开发?
- 信息发布系统 Jquery+MVC架构开发(4)Model 层
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(66)-MVC WebApi 用户验证 (2)
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(61)-如何使用框架来开发
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建Viewport(2)
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建Viewport(2)
- ASP.NET MVC 模式开发常用的 jQuery EasyUI Demon
- AndroidStudio提交项目git服务器/github
- test
- 获取指定时间段中时间间隔源代码--h.k
- 自绘无标题栏Frame
- 猎场,郑秋冬陷入传销,黑钱来袭
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发2-Model层建立
- jemter 入门
- Java学习路线图
- Python 连接mysql 时 fetchone的作用
- zookeeper
- Yii学习笔记之一(安装与基础环境的配置)
- 含有通配符?和*的字符串匹配算法
- MySQL将查询结果插入到数据表中
- Linux服务器禁Ping