HTML5技术

【第二篇】ASP.NET MVC快速入门之数据注解(MVC5+EF6) - 三生石上(2)

字号+ 作者:H5之家 来源:H5之家 2016-12-27 13:00 我要评论( )

public class Student{ public int ID { get ; set ; }[Required][StringLength( 200 )] public string Name { get ; set ; } public int Gender { get ; set ; }[Required][StringLength( 200 )] public string Ma

public class Student { public int ID { get; set; } [Required] [StringLength(200)] public string Name { get; set; } public int Gender { get; set; } [Required] [StringLength(200)] public string Major { get; set; } public DateTime EntranceDate { get; set; } }

 

 

如果输入[Required]时没有智能感知,很可能是没有引用相应的命名空间,VS可以很方便的协助我们添加:

 

这样就会在文件头部添加如下引用:

using System.ComponentModel.DataAnnotations;

 

 

直接运行项目(Ctrl+F5),此时我们会看到如下的错误页面:

 

相信使用EF的同学都会遇到这个页面,上面的提示也很明确,包含两个层次的信息:

1.     数据库创建之后模型改变了。

2.     可以使用数据迁移来更新数据库。

 

数据迁移(Migrations

VS[工具]菜单中,找到Nuget包管理器控制台:

 

 

启用数据迁移

在控制台中输入如下命令:Enable-Migrations

 

这时会在项目目录中增加一个Migrations文件夹,里面放置了两个文件:

 

EF会通过C#代码的方式将每一次对模型的修改保存到这个文件夹中,现在来看下生成的文件内容:

 

每个迁移文件,都包含UpDown两个重写函数,分别对应于更新和回退。上面的代码也很直白,Up函数中创建一个Students表,定义表结构并指定ID主键(PrimaryKey),Down函数用来回退操作,里面简单的删除了Students表。

 

可以看到,这里的创建表操作并没有使用最新的模型(Name列没有nullable的设置),因为这是初始模型对应的表结构,EF会在数据库中自动生成一个名为__MigrationHistory表来跟踪数据库的状态。

 

增加迁移项

增加迁移项需要我们手工来进行,在程序包管理器控制台中,输入如下命令:

Add-Migration Add_Annotation_Name_Major

 

这时会在Migrations目录下生成迁移文件,文件是以[时间+迁移名]命名的,方便查找:

201612160406415_Add_Annotation_Name_Major.cs

 

更新到数据库

此时,数据库尚未改变,我们还需要手工命令来更新数据库:

Update-Database

 

此时,再来查看数据库中Students的表结构:

 

Name列的数据类型和是否允许Null都已经改变了。

 

在真实的项目中,数据库可能部署在远程服务器中,这时我们就不能直接在VS中通过Update-Database来更新数据库了。

不过我们可以生成更新SQL脚本,然后拿到数据库服务器上执行。生成这个SQL脚本的方法:

Update-Database   -Script

-SourceMigration: InitialCreate

-TargetMigration: Add_Annotation_Name_Major

 

来看下生成的SQL更新脚本:

 

有了这个SQL更新脚本,我们就可以方便的更新远程数据库了。

 

视图的客户端验证

现在运行项目,转到创建页面:

可以看到,如果Name为空则会有错误提示信息,而Major输入字符串过多,也会有提示信息,而这些设置是来自模型的数据注解。

 

这个客户端验证是有jQueryvalidation插件提供的:

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6) - 三生石上

    【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6) - 三生石上

    2016-12-23 17:00

  • 微信js框架第二篇(创建完整界面布局) - L-H

    微信js框架第二篇(创建完整界面布局) - L-H

    2016-12-22 15:05

  • ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑 - 路过秋天

    ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑

    2016-11-20 16:00

  • 在ASP.NET Core中使用Angular2,以及与Angular2的Token base身份认证 - 微软一站式示

    在ASP.NET Core中使用Angular2,以及与Angular2的Token base身份认证

    2016-11-20 15:00

网友点评