还要这样啊,有个简单的,每个表加一列最后修改时间,修改之前两个比较一下,不相同即被修改了,提示重新加载页面,有点措:)
(一) concurrent 并行访问
做法 (1)
ASP.NET 的 ObjectDataSource 控件有内建此一「并行处理」的功能,默认好像是没有启用。例如若有个 FormView 控件表单,若用 ObjectDataSource 控件当数据来源,当启用 concurrent 后,用户在对 FormView 表单,做「修改(update)」或「删除(delete)」时,即会自动在内存中暂存字段的旧值,提交后,会自动和数据库中字段的值做比对。若比对符合即可顺利写入数据库;若比对不符合,表示某一个或多个字段,已在同一时间,被另一名用户改了数据库中的值,亦即发生了 concurrent 并行的情况,此时即会抛回例外,动作较慢的用户,即暂时无法 update 或 delete FormView 中的数据,只有第一个最先 update 的用户,才能写入。
可参考 ASP.NET 的书籍或在线文件。
做法 (2)
如一楼所说的做法,只不过不用 ASP.NET 内建的 concurrent,改用数据库自己自定义的一个字段去比对。优点是不用像 (1) 一样,每个 FormView 表单中的每个字段,一个一个去比对;缺点是,暂存用来比对的旧值、比对的动作,要自己手动 .net 写码处理。
(二) 透过 ADO.NET 撰码,配置数据库的「事务隔离等级 (Transaction Isolation Level)」。让每个事处在处理期间,别的用户不能修改或删除某一条记录。可参考 ADO.NET 的书籍或在线文件。
锁。楼上的全对。最简单可以用session控制。