演练5-6:Contoso大学校园管理系统6

在上一次的教程中,我们处理了关联数据问题。这个教程演示如何处理并发问题。你将使用Department实体创建一个页面,这个页面在支持编辑和删除的同时,还可以处理并发错误。下面的截图演示了Index页面和Delete页面,包括在出现并发冲突的时候提示的一些信息。

一、并发冲突

并发冲突出现在这样的时候,一个用户正在显示并编辑一个实体,但是在这个用户将修改保存到数据库之前,另外的一个用户却更新了同样的实体。如果你没有通过EF检测类似的冲突,最后一个更新数据的用户将会覆盖其他用户的修改。例如,一个大客户有不同的部门下订单。部门1打电话给员工1下订单。几个小时后,部门1又打电话给员工1修改订单。同时,部门2打电话给员工2修改同一个订单,添加一些产品。两个员工同时检索该订单,员工1修改了一些details,添加了几个并且保存订单。员工2移除一个detail,1分钟后保存订单。这两个员工不会意识到存在问题,最终将错误的货物交付给客户。

在一些程序中,这样的风险是可以接受的,如果只有很少的用户,或者很少的更新,甚至对数据的覆盖不是真的很关键,或者解决并发的代价超过了支持并发所带来的优势。在这种情况下,你就不需要让你的程序支持并发冲突的处理。

1.悲观并发(锁定)

如果你的应用需要在并发环境下防止偶然的数据丢失,一种方式是通过数据库的锁来实现。这种方式被称为悲观并发。例如,在从数据库中读取一行数据之前,可以申请一个只读锁,或者一个更新访问锁。如果你对数据行使用了更新访问锁,就没有其他的用户可以获取不管是只读锁还是更新访问锁,因为他们可能获取正在被修改中的数据。如果你使用只读锁来锁定一行,其他用户也可以使用只读访问,但是不能进行更新。

时间: 2024-10-05 20:13:11

演练5-6:Contoso大学校园管理系统6的相关文章

演练5-4:Contoso大学校园管理系统4

在之前的教程中,我们已经完成了学校的数据模型.现在我们将读取和显示相关数据,请理解EF装载导航属性的方式. 下图显示了我们将要实现的页面效果. 一.Lazy.Eager.Explicit数据加载 使用EF为实体中的导航属性加载相关数据,有下面几种方法. 1.Lazy loading 当实体第一次读取时,相关数据并没有获得.然而当你第一次想要访问导航属性时,导航属性的相关数据会自动获得.这产生了多次访问数据库,一次是实体数据读取,一次是导航属性读取. 2.Eager loading 当实体读取时,

演练5-7:Contoso大学校园管理系统(实现继承)

在上一次教程中,你已经能够处理并发异常.这个教程将会展示如何在数据模型中实现继承. 在面向对象的程序设计中,你可以通过继承来清除冗余的代码.在这个教程中,你将要通过修改教师 Instructor 和学生 Student 类,以便使他们从包含类似 LastName 属性的 Person 类中派生.对于 Web 页面不需要任何改动,你需要修改一点代码,这些修改将会被自动反射到数据库中. 一.单表继承 (Table-per-Hierarchy)  vs 类型表 (Table-per-Type) 继承

演练5-1:Contoso大学校园管理1

**演练目的:掌握复杂模型的应用程序开发. Contoso大学校园管理系统功能包括学生.课程.教师的管理. 一.创建MVC Web应用程序 显示效果如下图,操作步骤略. 二.创建数据模型 1.创建学生实体 using System; using System.Collections.Generic; namespace ContosoUniversity.Models { public class Student { public int StudentID { get; set; } publ

Contoso 大学 - 使用 EF Code First 创建 MVC 应用,实例演练

Contoso 大学 Web 示例应用演示了如何使用 EF 技术创建 ASP.NET MVC 应用.示例中的 Contoso 大学是虚构的.应用包括了类似学生注册.课程创建以及教师分配等功能. 这个系列教程展示了创建 Contoso 大学应用的步骤.你可以 下载完整 的程序,或者按照教程一步一步创建它,这个教程中使用 C# 进行演示,下载的代码中同时包含 C# 和 VB 实现.如果你有与这个教程没有直接相关的问题,可以张贴到 ASP.NET Entity Framework forum  或者

Contoso 大学 - 7 – 处理并发

原文地址:http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/handling-concurrency-with-the-entity-framework-in-an-asp-net-mvc-application 全文目录:Contoso 大学 - 使用 EF Code First 创建 MVC 应用 在上一次的教程中我们处理了关联数据问题.这个教程演示如何处理并发问题.你将使用 Department 实体创建一

开源项目1:某大学校友管理系统

申明:所有的本人开源项目仅供学习交流用. 为了方便学习交流,我会慢慢将一些私有的项目开源,有些项目可能开发的时间比较早,会有些欠缺,可以多多交流. IDE:myeclipse 8.5(版本问题不大),web服务器:tomcat 6.0,数据库:sql server 2000/2005,系统架构:struts2+Hibernate+Spring+Ajax 界面篇: 由于下班在即,剩余分析晚上稍后,源码和数据库下载也稍后 开源项目1:某大学校友管理系统

Contoso 大学 - 3 - 排序、过滤及分页

原文地址:http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application 在上一个课程中,我们已经学习了如何使用 EF 对 Student 实体进行增.删.改.查处理.这次的课程我们将对学生的 Index 页面加入排序.过滤以及分页的功能.还要创建一个页面完成

Contoso 大学 - 5 – 读取关联数据

原文地址:http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/reading-related-data-with-the-entity-framework-in-an-asp-net-mvc-application 全文目录:Contoso 大学 - 使用 EF Code First 创建 MVC 应用 在前面的课程中已经完成了 School 数据模型.在这次的课程中,将要读取和显示相关的数据,这里指的是 EF 通

Contoso 大学 - 10 - 高级 EF 应用场景

原文地址:http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/advanced-entity-framework-scenarios-for-an-mvc-web-application全文目录:Contoso 大学 - 使用 EF Code First 创建 MVC 应用 在上一个教程中,你已经实现了仓储和工作单元模式.这个教程涵盖下列主题: 执行原始的 SQL 查询 执行没有跟踪的查询 检查发送到数据库的查询