MVC5中Model层开发数据注解

 

ASP.NET MVC5中Model层开发,使用的数据注解有三个作用:

  1. 数据映射(把Model层的类用EntityFramework映射成对应的表)
  2. 数据验证(在服务器端和客户端验证数据的有效性)
  3. 数据显示(在View层显示相应的数据)

数据注解相关的命名空间如下:

DataAnnotations名称空间中包含主要的数据注解,Schema名称空间中包含一些数据映射的数据注解,Mvc名称空间中包含字符、数组、数值长度和属性比较的数据注解,Security名称空间中包含MemberShipPassword注解特性。

数据映射和验证相关的数据注解:

[Required]  必填字段
[MaxLength]  指定属性中允许的数组或字符串数据的最大长度
[MinLength] 指定属性中允许的数组或字符串数据的最小长度
[StringLength]                       指定最小和最大字符长度
[Range]   指定数值范围

数据验证相关的数据注解

[Remote] 使用 jQuery 验证插件远程验证程序的特性
[FileExtension] 验证文件扩展名
[Compare] 比较两个属性的值
[RegularExpression] 使用正则表达式验证
[CustomValidation]  自定义验证方法
[DataType] 指定要与数据字段关联的附加类型的名称
[EmailAddress] 电子邮件地址(相当于[DataType(DataType.Email)])
[Phone] 电话(同上)
[CreditCard] 信用卡号码(同上)
[Url]  验证URL(同上)
[MemberShipPassword]         验证密码字段是否满足成员资格提供程序的当前密码要求

数据映射相关的数据注解:

[Key] 主键字段
[Column] 数据库列属性映射
[NotMapped] 不要创建对应的字段
[Table] 指定类将映射到的数据库表
[ForeignKey] 表示关系中用作外键的属性
[DatabaseGenerated]            指定数据库生成属性值的方式(EF不追踪属性的变化)

数据显示相关的数据注解:

[DisplayName] 指定本地化的字符串(习惯用语类)
[Display] 指定本地化的字符串(习惯用语属性)
[DisplayFormat] 设置数据字段的格式
[ReadOnly]  指定该特性所绑定到的属性是只读属性还是读/写属性
[EditAble] 指示数据字段是否可编辑
[HiddenInput] 指示是否应将属性值或字段值呈现为隐藏的 input 元素
[ScaffoldColumn]                    指定类或数据列是否使用基架
[UIHint]  指定动态数据用来显示数据字段的模板

其他

[DisplayColumn]                    将所引用的表中显示的列指定为外键列
[Description]

可视化设计器在引用组件成员时可以显示指定的说明

(命名空间:System.ComponentModel.DescriptionAttribute

1、数据验证相关的数据注解继承ValidationAttribute类,都有一个ErrorMessage属性用来显示错误提示。

如:[Required(ErrorMessage="此项不能为空")]。

2、数据映射中Int类型和DateTime类型在数据库中默认不允许为NULL,如果需要设置为NULL,使用可空类型即可(使用Int?或者DateTime?)。

初学ASP.NET MVC顺便总结了一下数据注解(并不包含所有的内置数据注解),每个数据注解的具体使用请查询MSDN,不当的地方望指正。

EF Code First Migrations数据库迁移

 

1>、在程序包管理器控制台,执行语句:

PM> Enable-Migrations -EnableAutomaticMigrations

执行成功后,应用程序代码结构中,添加Migrations文件夹,并生成类文件Configuration.cs。

2>、在程序包管理器控制台,执行语句:

PM> Add-Migration InitialCreate

 执行成功后,在Migrations文件夹中新增类文件 年月日时分秒_InitialCreate.cs

3>、在程序包管理器控制台,执行语句:

PM> Update-Database -Verbose

  执行结果生成与上面一致的数据库

4>、在数据库模型中添加Model类,执行程序包管理器控制台语句,Migrations文件夹中新增类文件年月日时分秒_Model类.cs。

PM> Add-Migration Model类

  

再次执行程序包管理器控制台语句

PM> Update-Database -Verbose

版本回溯

  修改数据库中表Model类对应的表。在程序包管理器控制台中执行以下两条语句:

PM> Add-Migration ModifyCity
PM> Update-Database -Verbose

  执行成功之后,Model表结构修改了

  执行程序包管理器控制台语句,进行数据库版本回溯。

PM> Update-Database –TargetMigration: 对就在的Migrations文件夹下的cs文件

C# 常用对象的的修饰符

 

class(类)

1.internal 表示类只能在当然程序集中访问,类默认修饰符

2.public 表示所有地方都可以访问,与internal是互斥的

3.abstract 抽象类,不能被实例化,只能继承

4.sealed 密封类,不能被继承,与astract是互斥的

interface(接口)

1.public 表示所有的地方都可以访问,接口默认修饰符

2.internal 表只能在当然程序集只访问

注:接口不能用abstract与sealed,这对接口来说,没有意义

类的成员(字段,方法,属性)

1.private 只有当前类的内部能访问,成员的默认修饰符

2.protected 只有当前类或从当前类的子类能访问

3. internal 当前程序集能访问

4. internal protected 当前程序集中继承他的子类可以访问

5. public 没有限制

6. static 表中成员为静态成功,可与以上访问修饰符一起使用,表示类本身调用,不能使用实例对象调用

7. readonly 只对字段有效,可与其它修饰符使用,表中只读字段

方法的其它修饰符

1.virtual  表示方法可以被重写

2.abstract  表示方法必须被重写,是没有方法体的,有抽象方法的类必须为抽象类

3.override  表示重写基类中的方法

4.extern  表示方法定义在其它地方

5.new  表示派生类的类方法隐藏基类方法;

6.this  表示指向当前类实例引用,

7.base 表示关键字指向基类实例引用

接口的成员(字段,方法,属性)

1.public ,一般不用手动写,默认就是public

C# 静态构造函数

 

•静态构造函数既没有访问修饰符,也没有参数。

•如果没有编写静态构造函数,而这时类中包含带有初始值设定的静态字段,那么编译器会自动生成默认的静态构造函数。

•在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类,也就是说我们无法直接调用静态构造函数,也就无法控制什么时候执行静态构造函数了。

•如果类中包含用来开始执行的 Main 方法,则该类的静态构造函数将在调用 Main 方法之前执行。

•如果类中的静态字段带有初始化,则静态字段的初始化语句将在静态构造函数之前运行。

•一个类只能有一个静态构造函数。

•无参数的构造函数可以与静态构造函数共存。尽管参数列表相同,但一个属于类,一个属于实例,所以不会冲突。

•最多只运行一次。

•静态构造函数不可以被继承

MSSQL2005数据库自动备份问题(到同一个局域网上的另一台电脑上)

 
有A数据库服务器,B本机; 
 
我现在想通过在B机器上通过代码调用SQL来执行A数据库的备份到B机器上 
 
调用的SQL语句为:Backup Database MYDATABASE To Disk='D:/test.bak'
,这样备份的目录是数据库服务器A的D盘下; 
 
怎么才能备份到A的D盘下呢? 
 
请各位给予建议,谢谢!
----------------------------------------------------------------------------------------------------
 
要用远程数据库可以备份本地。 
本地数据库也可以备份到远程。 
 
--备份环境:把数据库服务器(192.168.1.8)的数据库(TEST)备份到(192.168.1.145)的C$下 
 
--首先,做一个与客户端的映射 
exec master..xp_cmdshell 
'net use z: \\192.168.1.145\c$ "密码" /user:192.168.1.145\administrator' 
/*--说明: 
z: 是映射网络路径对应本机的盘符,与下面的备份对应 
\\192.168.1.145\c$    是要映射的网络路径 
192.168.1.145\administrator    
192.168.1.145是远程的计算机名,administrator是登陆的用户名 
密码                        上面指定的administrator用户的密码 
--*/ 
 
 
--其次,进行数据库备份 
backup database TEST to disk='z:\Test.bak' 
 
--最后.备份完成后删除映射 
exec master..xp_cmdshell 'net use z: /delete' 
--来自网络
 
--以下代码放在作业里做调度,自动备份、自动删除4天前备份
 
--创建映射
exec master..xp_cmdshell 'net use w: \DatabaseBackup$  "password"/user:Roy',NO_OUTPUT
go
-----2000用游标:
declare @s nvarchar(200),@del nvarchar(200)
select  @s='',@del=''
 
declare datebak cursor for
select 
    [bak]='backup database  '+quotename(Name)+'  to disk =''w:'+Name+'_'+convert(varchar(8),getdate(),112)+'.bak''  with 
 
init',
    [del]='exec master..xp_cmdshell '' del w:'+Name+'_'+convert(varchar(8),getdate()-4,112)+'.bak'', no_output' 
from master..sysdatabases where dbid>4 --不备份系统数据库
open datebak
 
fetch next from datebak into @s,@del
while @@fetch_status=0
    begin
        exec (@del)
        exec(@s)
        fetch next from datebak into @s,@del
    end
close datebak
deallocate datebak
go
--删除映射
exec master..xp_cmdshell 'net use w: /delete'
 
go
 
 
--用JOB. 
--SQL SERVER2000为例 
 
企业管理器—>数据库服务器—>管理目录—>SQL SERVER代理—>作业—>右键 选—>新建 
 
常规选项页—>输入作业名称—>选中所有者。 
 
步骤选项页—>新建—>输入步骤名—>类型 TSQL脚本—>选择需要执行的数据库—>在命令框里输入你的SQL 脚本: 
 
如:update tb set 状态= ...  where 日期........... 
 
你可以点左下角的【分析】按钮,分析一下语法,分析无误,按确定。 
 
调度选项页—>新建调度—>输入调度名称—>调度类型 你可以选择也可以点右下角的【更改】按钮进行更改,确定。 
 
任务栏 SQL SERVER服务器的小图标 双击 服务 选中 SQL SERVER AGENT,点【开始/继续】,选中当启动OS时,自动启动服务,就可以了。 
 
到你定的那个时间点,SQL SERVER会自动去执行你的脚本的。 
 
如果需要生成脚本的话,企业管理器—>数据库服务器—>管理目录—>SQL SERVER代理—>作业—>右键你刚完成的作业—>所有任务 
 
—>生成SQL脚本,即可生成你需要的脚本
 

MVC 的HTTP请求

 

  MVC 的HTTP请求过程(以IIS为例)

  

  1. 通过Browser发过请求给IIS(get/post)
  2. IIS得到请求后,再把请求转给aspnet_iisapi.dll处理,通过asp.net的一些框架的东西的调用,再使用Routing路由功能,查询相应的Controller
  3. 再从相应的Controller中查询Action
  4. 在Action中,通过调用BLL,DAL,EL一些组件做相应的数据处理
  5. 从Action得到相应的数据后,再通过ViewDate 或 Model把数据传给View
  6. 在View中把数据显示出来,传回过Browser展示

MVC5中Model层开发数据注解 EF Code First Migrations数据库迁移 C# 常用对象的的修饰符 C# 静态构造函数 MSSQL2005数据库自动备份问题(到同一个局域网上的另一台电脑上) MVC 的HTTP请求的更多相关文章

  1. MVC5中Model层开发数据注解

    ASP.NET MVC5中Model层开发,使用的数据注解有三个作用: 数据映射(把Model层的类用EntityFramework映射成对应的表) 数据验证(在服务器端和客户端验证数据的有效性) 数 ...

  2. MSSQL2005数据库自动备份问题(到同一个局域网上的另一台电脑上)

    有A数据库服务器,B本机:    我现在想通过在B机器上通过代码调用SQL来执行A数据库的备份到B机器上    调用的SQL语句为:Backup Database MYDATABASE To Disk ...

  3. 怎样在本地电脑上连接另外一台电脑上的mysql数据?(代码示例)

    基本上有两种方式: 1,使用MYSQL的管理工具,可以远程连接,比如用导航猫系列的,只要知道对方IP,然后就可以自己输入账号密码连接了. 2,使用代码连接. Java代码示例: package com ...

  4. MVC5中Model设置属性注解

    ASP.NET MVC5中Model层开发,使用的数据注解有三个作用: 数据映射(把Model层的类用EntityFramework映射成对应的表) 数据验证(在服务器端和客户端验证数据的有效性) 数 ...

  5. 在同一台电脑上同时安装Python2和Python3

    目前Python的两个版本Python2和Python3同时存在,且这两个版本同时在更新与维护. 到底是选择Python2还是选择Python3,取决于当前要使用的库.框架支持哪个版本. 例如:HTM ...

  6. git同时存在两个账号(在同一台电脑上)——三步完成

    目录 1.首先是常规设置 2.同时添加两个账号 3.最后一步,配置~/.ssh/config文件 4.补充:有时因为设置了全局账号,因此需要清除 由于本人有连个git账号,个人github账号和公司g ...

  7. Python_架构、同一台电脑上两个py文件通信、两台电脑如何通信、几十台电脑如何通信、更多电脑之间的通信、库、端口号

    1.架构 C/S架构(鼻祖) C:client  客户端 S:server  服务器 早期使用的一种架构,目前的各种app使用的就是这种架构,它的表现形式就是拥有专门的app. B/S架构(隶属于C/ ...

  8. 同一台电脑上个人的github账户如何与公司的gitlab账户共存

    前些天,写了篇博客 开发环境之git:团队协作git工作流与常用命令. 主要是回顾其中的第一小节基本配置. 但是对于很多程序员而言,我们不仅有公司的gitlab账户做公司的业务,也会有自己个人的git ...

  9. 怎么在一台电脑上同时启动多个tomcat

    怎么在一台电脑上同时启动多个tomcat? 应用场景: 一台电脑,需要同时部署多个tomcat,用于部署不同的系统 分布式系统,一个系统,同时需要开启多个tomcat,因为分布式系统可能会有多个war ...

随机推荐

  1. Impala的分布式查询

    翻译自<Getting Started with Impala> 分布式查询 分布式查询是impala的核心.曾几何时,你需要研究并行计算,才能开始进行深奥而晦涩的操作.现在,有运行在Ha ...

  2. adb shell am/pm 常用命令详解与使用

    一.adb shell am 使用此命令可以从cmd控制台启动 activity, services:发送 broadcast等等 1.am start <packageName/.classN ...

  3. Java技术——Java中的内存泄漏

    . OOM的常见类型 按照JVM规范,JAVA虚拟机在运行时会管理以下的内存区域: 程序计数器:当前线程执行的字节码的行号指示器,线程私有. JAVA虚拟机栈:Java方法执行的内存模型,每个Java ...

  4. 算法学习记录-图——最小生成树之prim算法

    一个连通图的生成树是一个极小的连通子图,它包含图中全部的顶点(n个顶点),但只有n-1条边. 最小生成树:构造连通网的最小代价(最小权值)生成树. prim算法在严蔚敏树上有解释,但是都是数学语言,很 ...

  5. 巴蜀2904 MMT数

    Description FF博士最近在研究MMT数. 如果对于一个数n,存在gcd(n,x)<>1并且n mod x<>0 那么x叫做n的MMT数,显然这样的数可以有无限个. ...

  6. 在echars上发布的半圆环形图

    http://gallery.echartsjs.com/editor.html?c=xBJvoMcPfz&v=1

  7. CodeForces 438D 线段树 剪枝

    D. The Child and Sequence time limit per test 4 seconds memory limit per test 256 megabytes input st ...

  8. 在 Windows 下用 TDM-GCC(MinGW)开发 DLL 涉及到数据同步锁及 DLL 初始化终止化函数的问题

    在 Windows 下用 TDM-GCC(MinGW)开发 DLL 如果要用到数据同步锁,理论上可以采用 Windows API 提供的临界区实现(需要用到的函数有 InitializeCritica ...

  9. Eclipse、IDEA安装JavaFX

    简介 JavaFX插件 e(fx)eclipse是一组工具和必要的库,它们帮助您执行JavaFX编程,确保您已经作为插件将其安装在eclipse上了. JavaFX Scene Builder Jav ...

  10. solus系统配置

    #更新软件源 清华稳定源 sudo eopkg ar Tuna https://mirrors.tuna.tsinghua.edu.cn/solus/shannon/eopkg-index.xml 清 ...