您的位置:首页 > 理论基础 > 计算机网络

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

2018-05-25 11:01 1101 查看

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] 信用卡号码(同上)
System.ComponentModel.DescriptionAttribute" target=_blank>  验证URL(同上)
[MemberShipPassword]         验证密码字段是否满足成员资格提供程序的当前密码要求

 

 

 

 

 

 

 

 

 

 

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

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

 

 

 

 

 

 

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

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

 

 

 

 

 

 

其他

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

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

(命名空间:[url=https://msdn.microsoft.com/zh-cn/library/System.ComponentModel(v=vs.110).aspx]System.ComponentModel.DescriptionAttribute)

 

 

 

 

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

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

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

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

 

 

 

[url=https://www.geek-share.com/detail/2655465380.html]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数据库自动备份问题(到同一个局域网上的另一台电脑上)

 

 

  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展示
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: