MVC3+EF4.1学习系列(二)-------基础的增删改查和持久对象的生命周期变化
2016-11-24 11:51
274 查看
上篇文章中 我们已经创建了EF4.1基于code first的例子 有了数据库 并初始化了一些数据 今天这里写基础的增删改查和持久对象的生命周期变化
学习下原文先把运行好的原图贴来上~~
View Code
这里面 我们不仅显示了该学生的详细信息 还显示了该学生选择的课程和成绩
因为我们的学生实体 有导航属性
这里面 涉及到了延迟加载 等读取相关属性的多关系数据的加载 这个不是我们这节讨论的重点 这个会在第五节讨论 到时会把加载的方式 生成的sql语句 等 讲清楚的 放心吧~~
在这里暂时就先不说了 直接开始下面的创建页
二.创建添加页面
首先 依然是添加控制器下的方法 这里面的方法要记得是
View Code
这里面我们选择开启验证 MVC验证会先验证客户端 再验证服务端 我们可以验证的有 是否为空 最大长度 最小长度 格式 比较是否相等等
这里 我们只需要在 实体上添加特性 MaxLength 等特性
这里我这有所有可以添加的特性的收集和介绍 大家可以看这个连接文章-----DataAnnotation验证
然后运行 发现当添加数据不符合要求时 会先进行js验证 提示错误 OK 添加就到这里
三.创建编辑页面
View Code
四.创建删除页面
View Code
这样就实现了删除了 这是原文博客里的方法 但我觉得很不合理
点击删除还要跳到专门的删除页 然后删除完再跳回来 这里 我们使用ajax来改造删除 来减少来回的跳页等的交互 以提高效率 (主要点写写MVC的应用了~~)
五.AJAX改造删除
我这里是用的 jquery ajax 用的习惯些~~
先改造控制器下的方法
主要是加上 if (Request.IsAjaxRequest()) 判断是否为ajax 接着 把返回类型改为 Content 返回-1 为修改失败 代码如下
View Code
接着是修改视图部分
首先 把原来的删除换成这句
然后引用jquery 接着 实现删除~~
OK了 改造成功~~
六.确保数据库资源及时释放
原文里面最要提出 让
排序 刷选 分页---- (这里我用的是国产的基于ScottGu的PagedList<T>类和相关方法完善的分页--MVCPager)
也是比较简单的 但至少更加贴近实际项目了~~
转载请保留下原文连接 谢谢~~ 原文地址
学习下原文先把运行好的原图贴来上~~
View Code
这里面 我们不仅显示了该学生的详细信息 还显示了该学生选择的课程和成绩
因为我们的学生实体 有导航属性
Enrollments 这里面 遍历每一个
Enrollments来
Enrollment 来得到分数 由于我们的
Enrollment 实体 包含了课程实体的导航属性 所以可以得到
课程的名字
这里面 涉及到了延迟加载 等读取相关属性的多关系数据的加载 这个不是我们这节讨论的重点 这个会在第五节讨论 到时会把加载的方式 生成的sql语句 等 讲清楚的 放心吧~~
在这里暂时就先不说了 直接开始下面的创建页
二.创建添加页面
首先 依然是添加控制器下的方法 这里面的方法要记得是
HttpPost
Create 不加post 就是get的方式 是直接访问页面时用的 post提交时用
其次 我们依然来看下这次生命周期状态的改变
View Code
这里面我们选择开启验证 MVC验证会先验证客户端 再验证服务端 我们可以验证的有 是否为空 最大长度 最小长度 格式 比较是否相等等
这里 我们只需要在 实体上添加特性 MaxLength 等特性
这里我这有所有可以添加的特性的收集和介绍 大家可以看这个连接文章-----DataAnnotation验证
然后运行 发现当添加数据不符合要求时 会先进行js验证 提示错误 OK 添加就到这里
三.创建编辑页面
View Code
四.创建删除页面
View Code
这样就实现了删除了 这是原文博客里的方法 但我觉得很不合理
点击删除还要跳到专门的删除页 然后删除完再跳回来 这里 我们使用ajax来改造删除 来减少来回的跳页等的交互 以提高效率 (主要点写写MVC的应用了~~)
五.AJAX改造删除
我这里是用的 jquery ajax 用的习惯些~~
先改造控制器下的方法
主要是加上 if (Request.IsAjaxRequest()) 判断是否为ajax 接着 把返回类型改为 Content 返回-1 为修改失败 代码如下
View Code
接着是修改视图部分
首先 把原来的删除换成这句
<a name="Delete" stuid="@item.StudentID">Delete</a>
然后引用jquery 接着 实现删除~~
$(function () { $("[name='Delete']").click( function () { if (confirm("确定要删除这条记录么?")) { var stuid = $(this).attr("stuid"); var tr = $(this).parent().parent(); $.post("Student/Delete/", { id: stuid }, function (data) { if (data == "-1") { alert("删除失败"); } else { $(tr).remove(); alert("删除成功"); } }); } } ); });
OK了 改造成功~~
六.确保数据库资源及时释放
原文里面最要提出 让
Controller类继承
IDisposable接口 以确保资源的即使释放 这里我理解的还不是很深刻有兴趣的可以看下原文 但我把代码贴出来
protected override void Dispose(bool disposing) { db.Dispose(); base.Dispose(disposing); }
七.总结
好了,简单的增删改查结束了 依然是没有多大难度的文章 新手可以看下 学习下EF的使用
这里面主要讲了 基本的CRUD和 这里面持久属性的状态的变化 并在后面用ajax重新实现了次删除
明天写
排序 刷选 分页---- (这里我用的是国产的基于ScottGu的PagedList<T>类和相关方法完善的分页--MVCPager)
也是比较简单的 但至少更加贴近实际项目了~~
转载请保留下原文连接 谢谢~~ 原文地址
相关文章推荐
- MVC3+EF4.1学习系列(二)-------基础的增删改查和持久对象的生命周期变化
- MVC3+EF4.1学习系列(一)-------创建EF4.1 code first的第一个实例
- Hibernate视频学习笔记(2)持久对象的生命周期及Query接口初步
- NHibernate从入门到精通系列(4)——持久对象的生命周期(上)
- MVC3+EF4.1学习系列
- MVC3+EF4.1学习系列(十)----MVC+EF处理树形结构
- MVC3+EF4.1学习系列(十一)----EF4.1常见的问题解决
- Hibernate基础之七:对象三种状态、增删改查时对应的状态变化
- hibernate学习笔记之(持久对象的生命周期及Query接口初步)
- MVC3+EF4.1学习系列(一)-------创建EF4.1 code first的第一个实例(强转)
- MVC3+EF4.1学习系列(十一)----EF4.1常见的问题解决(转)
- MVC3+EF4.1学习系列
- NHibernate从入门到精通系列(5)——持久对象的生命周期(下)
- MVC3+EF4.1学习系列(五)----- EF查找导航属性的几种方式
- MVC3+EF4.1学习系列(八)-----利用Repository and Unit of Work重构项目
- MVC3+EF4.1学习系列(十一)----EF4.1常见的问题解决
- MVC3+EF4.1学习系列(十一)----EF4.1常见的问题解决
- NHibernate从入门到精通系列(5)——持久对象的生命周期(下)
- MVC3+EF4.1学习系列(五)----- EF查找导航属性的几种方式
- MVC3+EF4.1学习系列(九)-----EF4.1其他的一些技巧的使用