我计划将 MS 实体框架用于新的 Web 应用程序(使用 EF v2!)。
那么通过将时间戳列添加到现有和未来数据库中的所有实体表来支持并发检查,提前计划是否有意义?有什么理由为什么在每个表中都有一个时间戳列是个坏主意吗?
请注意,重点是添加对乐观并发的支持,而不是审计。
我计划将 MS 实体框架用于新的 Web 应用程序(使用 EF v2!)。
那么通过将时间戳列添加到现有和未来数据库中的所有实体表来支持并发检查,提前计划是否有意义?有什么理由为什么在每个表中都有一个时间戳列是个坏主意吗?
请注意,重点是添加对乐观并发的支持,而不是审计。
多年来,我一直使用时间戳列作为例行公事。另一种选择是行版本,但是你需要更新它等等。我从来没有遇到过时间戳问题。需要注意的一点——如果你曾经选择进入一个临时表/表变量进行处理,你需要在临时表中使用varbinary(8)
,而不是timestamp
——否则你的临时表将在更新时获得它自己唯一的时间戳;-p
正如您所承认的,timestamp
仅有助于并发性。尽管有名字,但它与时间没有直接关系,因此对审计没有帮助。
MS db 产品(LINQ-to-SQL / EF / 等)很好地支持它
在以前的项目中,我经常使用时间戳,而且我从未有过不好的体验。此外,我会从该决定中完全排除实体框架,因为这可能会随着时间的推移而改变。