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 用起来真的很方便。