我有两个实体,一个是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
(当前在数据库中显示(。如果它们不相等,将抛出特殊异常。