我们如何在asp.net中解决并发问题

时间:2009-07-10 08:03:15

标签: ado.net asp.net-2.0

在asp.net网站上,我们有enry表格,管理员可以访问。

有多个管理员可以进入。如果所有管理员同时打开并从表单中选择一些组合框值,那么我们如何保持并发

因为一旦第一个管理员从combox中选择值并保存,那么该值应从数据库中删除。

但是,如果让两个或三个管理员同时保存相同的值,那么并发问题怎么解决呢。

正确的地方代码在哪里或在数据库中?怎么样?

3 个答案:

答案 0 :(得分:1)

您应该阅读有关乐观并发控制的内容。真的可以归结为在乐观,悲观和最后一场胜利之间做出选择。通常正确的选择是乐观的,除非这是一个非常耗时的过程,最终另一个用户的失败将令人沮丧。

至于正确的位置,您需要告诉您当前如何使用数据访问代码。您还在使用什么数据库?

This article会为您提供一些入门信息。

答案 1 :(得分:0)

在我们的应用程序中,我们处理它们:

我们所有的更新都通过更新存储过程。 当“修改”字段,即mandetory,比给定的字段更新时,这会出现错误。错误是由代码中的特殊异常类引发的,您可以将其识别为并发异常。

E.g:

  • 阅读1:00:00:00(修改日期在过去,例如11:00:00)
  • 阅读2:12:01:30(修改日期不变)
  • 更新1:12:03:00(设置修改= 12:03:00)
  • 更新2:12:04:00(并发删除,因为更新请参阅:哦,修改后比给定的更新)

答案 2 :(得分:0)

实现并发性的常用技术是使用时间戳进行更新,作为开发人员根据业务流程编写代码。通常情况下,您选择的是:最后一个获胜,因此最后一次写入获胜,通知用户冲突并让他们选择是否要提交更改,或合并更改的值。

这最后一种技术在数据库中并不常见,因为它意味着用户提交了一组值,但更新了不同的集合,这可能会让他们感到惊讶(同样,它需要复杂的规则)。如果您考虑一些源控制提供程序的工作方式,您可以看到它是如何实现的。

在删除操作的情况下,没有必要担心,因为两个用户删除相同记录真的很重要吗?第二个没有效果。