我打算将MS实体框架用于新的网络应用程序(来自EF v2!)。
因此,通过向现有和未来数据库中的所有实体表添加时间戳列来提前计划是否有意义,以支持并发检查?为什么在每个表中都有一个时间戳列是坏的想法?
请注意,重点是添加对乐观并发的支持,而不是审计。
答案 0 :(得分:10)
多年来,我一直使用时间戳列作为例程。另一种选择是行版本,但是你需要更新它等等。我从来没有遇到任何时间戳问题。需要注意的一点是 - 如果您选择使用temp-table / table-var进行处理,则需要在临时表中使用varbinary(8)
,而不是timestamp
- 否则您的临时表将获得其更新后拥有唯一的时间戳;-p
如您所知,timestamp
仅对并发有帮助。尽管有这个名字,它没有直接与时间有关,所以无法帮助审核。
MS db产品(LINQ-to-SQL / EF / etc)
得到了很好的支持答案 1 :(得分:0)
在之前的项目中,我经常使用时间戳,而且我从来没有遇到过错误的经历。 此外,我完全将该实体框架排除在该决定之外,因为这可能会随着时间的推移而发生变化。