我正在使用 C#、EF 和 SQL Server,并且很少有具有父子关系的表。有超过 2 个,但在此示例中,为简单起见,我将仅使用 2 个。
表书
Id
DateModified
RowVersion
表页
Id
BookId - this is foreign key to Book.Id
RowVersion
当任何页面/页面更新时,我需要DateModified
在 Book 表中更新。
我们RowVersion
用来跟踪更改,因为它具有独特的价值,我希望始终能够通过简单地执行以下操作来获得每本书的最新更改
SELECT * FROM Page
WHERE RowVersion > Book.RowVersion
但为了做到这一点,我需要确保RowVersion
inBook
表总是在RowVersions
in之前更新Pages
。
在我的 EDM 层中,我目前有这样的东西:
class Page
{
void OnPageChanged() //this is hooked to OnPropertyChanged
{
this.Book.UpdateDateModified(DataTime.Now);
}
}
这样做会导致页面首先更新,并且在事务提交后它的 RowVersion 也会首先更新。这不是我需要的。
问题,如果我将OnPageChanged()
改为处理OnPropertyChanging
事件 - 这会保证一致性吗?是否OnPropertyChanged
决定了更新在 EF 生成的 sql 中发生的顺序?对于这个案例还有什么其他建议吗?