asp.net mvc 学习备忘 2

 2014-7-13

用EF架构进行开发,可以选择code first, model first, database first三种模式。

因为实体设计器只在model first,database设计器中提供。所以试用了,结果不理想。用起来没感觉

难怪文章都推荐用code first。

基本步骤 建立项目 安装EntityFramework 包。构建相应的实体类,构建数据库上下文(数据库连接信息等),添加控制器(EF基架会自动产生相应的页面。)

如果需要修改模型,添加对模型的更多描述,需要usingSystem.ComponentModel.DataAnnotations;

修改以后用code first migration

如果没有写数据表的seed方法。则修改表结构后迁移非常简单。

在pm中运行 enable-migrations -contexttypename cmsContext -EnableAutomaticMigrations

运行update-database -force

数据库中的表就自动更新了。原来的数据会全部丢失。如果原来有数据,则不能这样处理。

control和view 则无法自动更新,可以删除掉重新生成,或者手动更新。


如果要创建/更新的数据在多个表中,获取数据的代码要自己写,主要是用tryupdatemodel()更新模型,然后对模型中的字段进行判断,如果导航属性为空,则设置为null,这样就可以自动删除。

1.RetryLimitExceededException 什么意思?

2.更新模型后,再更新数据库,主要有哪些命令,可以只重建有更新的表吗?

3.如果create时,因为后导航属性,一个表单的数据要添加到2个表,代码如何写? 实验了下,可以把另外一个表的数据,通过参数传递进来,再处理。

或者建立一个类,new 对应的导航属性,然后用tryupdatemodel填充它。因为导航属性是一个对象的话,往往没有加载进来。是不是可以在create的时候关闭lazy laoding呢?

用tryupdatemodel重建这个类可以解决。

4.如何防止重复提交?比如删除记录的时候,自动生成的代码在deletecomfirm中没有判断记录是否已经删除,这样如果后退页面,在提交删除,会出错。可以在判断下。

mvc 用起来真的很方便。








你可能感兴趣的:(asp.net mvc 学习备忘 2)