用EF Core处理SQL Server中的乐观并发-更新子级时,如何更新父级



我有两个实体,一个是paper,另一个是paper line

我使用SQL Server来存储实体记录,每个实体都由数据库中的一个表表示

PaperEntity包含列

Id, Color, TimeStamp (RowVersion), etc...

PaperLineEntity包含列

Id, PaperId(FK), lineContent, TimeStamp (RowVersion), etc...

我在想如何防止两个用户在同一篇论文中更新两个不同的行,我的想法是,当你更新行时,你必须更新该行所属的论文记录的时间戳,关于我如何在EF Core中管理这一点,有什么想法吗?

获取纸张行时,也要获取TimeStamp(RowVersion(,当用户保存该行时,首次比较时间戳如果它不同,所以你返回一个错误,否则它是相同的,那么你允许更新它

您可以使用并发令牌。想法和你描述的一样:你有一个特殊的属性,它随着实体的每次更新而更新。您应该使用特殊属性或流畅的配置来标记此属性。EF Core将在每次更新期间自动比较old_value(最初从数据库中读取(和current_value(当前在数据库中显示(。如果它们不相等,将抛出特殊异常。

最新更新