MVC 捋一遍(3)

Seed方法接收一个database context参数,利用这个参数添加新的实体到数据库中。

对每个实体类型:

新建一个实体集合

添加到相应的DbSet属性

保存更改到数据库中

执行 add-migration时,同样在Migrations文件夹里面,产生一个<timestamp>_InitialCreate.cs的文件。

里面两个方法,Up和Down: Up方法创建数据库表,Down方法删除表。

enable-migrations 和 add-migration InitialCreate

在项目根目录下创建了一个Migrations文件夹

在Migrations文件夹下新建一个Configuration.cs文件。

可以通过修改Configuration.cs来对Migration做一些配置(如加入一些测试数据等)

使用Code First Migrations方式,当数据库改变时测试数据会保留,所以Seed方法一般来说是不需要的。

在一个表中添加属性 需要用Code First Migrations 方式更新数据库

添加 public DateTime CreateDate { get; set; }

增加完之后及时使用Code First Migrations 方式更新数据库。(不然运行时会报contex和database不一致的错误)

执行add-migration AddTestTable和update-database, 完成数据库表的添加。表名为(Test)

add-migration AddCreateDateToSysUser,update-database,完成数据库表中元素的添加。元素名为(CreateDate)

所以最重要的是:启用迁移(enable-migrations) 和 执行迁移(add-migration 。。, update-database)

启用迁移:产生迁移相关文件夹Migrations和文件夹中相关的配置文件。

执行迁移:产生相关的迁移更改文件并执行更改。


限制显示具体时间格式

DataType 属性用来指定更加具体的数据类型,DataType枚举值提供了一些常见的类型,比如Date,Time,EmailAddress等。

但是DataType不能指定数据类型的显示格式,例如日期要什么格式显示。

默认情况下显示格式会根据电脑的设定显示。

这个时候就需要配合使用DisplayFormate属性来指定格式。

[DisplayFormat(DataFormatString="{0:yyyy-MM-dd}",ApplyFormatInEditMode=true)]

 

StringLength 指定数据验证规则以及出错信息

StringLength属性设置了数据库中存储字段的最大长度,为程序提供客户端和服务器端的验证。同样用这个属性也可以指定最小长度,不过不影响数据库的结构。

同样更新下数据库 (不然会出错)

add-migration MaxLengthOnNames

update-database

然后还要在controller中加一个判断不然还是会报错 if(ModelState.IsValid)

还要在Create.cshtml中增加一个Helper:ValidationMessageFor用来显示验证信息

 

Column (我感觉用的很少)

有时会有这么一种情况,我们Model中的字段和数据库中表的字段要用不同的命名。例如我们Model中命名为UserName,数据库表中命名为LoginName.

同样运行更新指令。

add-migration ColumnLoginName
update-database

对某一些类型来说不需要使用Required, 例如DateTime, int,double,float,Display因为这些值类型不能被赋予空值,因此他们天生就具有Required的特性。
直接update-database 就可以看到效果了

 

Lazy, Eager, and Explicit Loading of Related Data (不懂什么意思)

有三种方式EF可以加载关联数据到一个实体的navigation属性中

MVC Html.AntiForgeryToken() 防止CSRF攻击

http://blog.csdn.net/cpytiger/article/details/8781457这个比较有意思

Model验证总结 @Html.ValidationSummary(true) http://blog.csdn.net/wybshyy/article/details/52064253 里面有常用的正则表达式验证

posted @ 2017-12-06 18:50  你小子嚣张呀  阅读(161)  评论(0编辑  收藏  举报