ORM或数据库,其作用类似于版本控制并跟踪历史记录

Ste*_*ash 6 database orm entity-framework

这只是我想知道的一个随意的想法.是否存在本机支持跟踪历史记录的ORM或数据库?我想象的是每一行都有一个带有Id和版本的复合主键.更新将"附加"具有相同Id和下一个可用版本号的新行.普通选择仅返回唯一标识行的最新版本,但"SelectHistory"将返回所有行.删除本身就是一个软删除.

鉴于这不是一个新问题,并且在太阳下没有什么新东西,它让我觉得很有可能某人已经设计了一个优雅的解决方案来抽象出这部分的难点,并且它可以在数据库层或ORM层.

我有一个基于Entity Framework的现有应用程序.它会覆盖DbContext的SaveChanges方法,以便为每个新的/更改的实体设置CreatedBy/CreatedDate/ModifiedBy/ModifiedDate属性.客户最近询问了添加完整历史记录跟踪需要做多少工作.根据过去类似系统的经验,我给了他们一个合理的估计.我的估计涉及向模型和业务层逻辑添加其他实体以填充这些实体.客户决定不去做这项工作,但它让我想知道是否有更好的方法.实体框架是否有更好的解决方案?与其他架构有更好的解决方案吗?

Dav*_*ray 1

你所描述的是一种多版本并发控制的形式。通常,MVCC 由数据库实现在幕后使用,以避免在只读事务期间必须锁定,但也可以按照您的建议将其明确化。在这个问题中讨论了实现显式 MVCC 的一些不同选项。如果您还跟踪每个版本的 CreatedDate,那么您就拥有了时态数据库所需的一切。