C# 在删除/更新数据记录时处理用户界面中的并发性

C# 在删除/更新数据记录时处理用户界面中的并发性,c#,entity-framework-5,C#,Entity Framework 5,我想知道在以下情况下,我应该如何处理用户界面中的场景: 1.)用户删除已被其他用户删除的数据记录 当数据记录已被删除时,它将不再被删除,并且使用类似于“从表中删除,其中Id=@IdToDelete”的内容时,不会发生任何错误 但我是否应该告诉我的用户:“很抱歉,我们无法删除数据记录,因为它已被用户xyz删除” 2.)用户更新已被其他用户修改的数据记录? 我是否应该为我所有的update()场景向用户显示一个包含新值和旧值的窗口,让用户选择或最终决定哪一个会赢?1)一般来说,我不希望在这里向用户显

我想知道在以下情况下,我应该如何处理用户界面中的场景:

1.)用户删除已被其他用户删除的数据记录

当数据记录已被删除时,它将不再被删除,并且使用类似于“从表中删除,其中Id=@IdToDelete”的内容时,不会发生任何错误

但我是否应该告诉我的用户:“很抱歉,我们无法删除数据记录,因为它已被用户xyz删除”

2.)用户更新已被其他用户修改的数据记录? 我是否应该为我所有的update()场景向用户显示一个包含新值和旧值的窗口,让用户选择或最终决定哪一个会赢?

1)一般来说,我不希望在这里向用户显示任何消息,因为从功能上讲,他们要求做的事情已经完成了

2) 在这里,您经常会收到关于尝试更新显示给用户的已修改记录的警告。如何显示该警告在很大程度上取决于用户需求以及要显示的警告的复杂程度。最简单的解决方案是警告他们并要求他们刷新记录的本地副本,但这通常意味着他们需要重新进行更改,这对用户来说是一个挫折点。向他们展示冲突将是一种更好的用户体验,但可能会有点复杂,特别是对于大型记录。

1)信息来自哪里?如果您不记录谁删除了什么记录,那么数据库不会告诉您这些信息

2) 这取决于你的应用程序-有些情况下“最后的胜利”策略是可以的,有些情况下它是不可以的。如果存在冲突,您可以决定需要/想要做什么

1)ExecuteOnQuery(删除)有一个返回参数,它是受影响的记录,可以很容易地进行检查…我重新表述了我的问题2)我是否应该为我的所有更新语句显示一个旧/新值窗口,因为对于每个人来说,可能有一个脏字段已经被另一个用户更改了。