我有一个复选框列表绑定到List<>的业务对象集合。在我的复选框列表中选中某个项目时,我想将所选业务对象标记为脏。
答案 0 :(得分:5)
这是一个关于并发的问题:如何让多个用户修改相同的业务对象,并确信每个编辑都会成功保存。
如果要将对象存储在缓存中,则可以创建一个部分对象以包含“IsDirty”布尔属性。在检查项目时,将相关对象的IsDirty属性设置为true。
有许多方法可以处理并发,您可以尝试的一种方法是在选中项目时检查IsDirty属性。如果属性为false,则将该属性设置为true。如果该属性已经为true,则向用户发回错误。保存对象后,将IsDirty属性重置为false。
当您尝试使用为保存对象而创建的规则更加复杂时,事情会变得越来越复杂。
答案 1 :(得分:0)
您可以将列表存储在view-state / session-state / cache中,也可以在post-back上从数据库中重新获取,然后您可以根据索引标记业务对象。就个人而言,我将选择通过包装器方法获取业务对象列表,该方法将其查看到缓存中,如果没有,则从数据库中获取它 - 这将允许具有较小的缓存到期时间。
在多用户方案中,它将取决于您如何管理并发。有关ASP.NET中的并发性的快速入门,请参阅此article。