哪个ORM框架可以最好地处理MVCC数据库设计?

Eri*_*ard 9 database orm entity-framework

在设计数据库以使用MVCC(多版本并发控制)时,您可以使用类似"IsLatest"的布尔字段或整数"VersionId"创建表,并且您永远不会进行任何更新,只会在事情发生变化时插入新记录.

MVCC为需要详细历史记录的应用程序提供自动审计,并且还减轻了数据库对更新锁的压力.缺点是,由于获得最新版本所需的额外条款,它会使您的数据大小更大并减慢选择速度.它还使外键更复杂.

(请注意,我不是在讨论SQL Server的快照隔离级别等RDBMS中的本机MVCC支持)

这已在Stack Overflow上的其他帖子中讨论过.[todo - 链接]

我想知道,哪些流行的实体/ ORM框架(Linq to Sql,ADO.NET EF,Hibernate等)可以干净地支持这种类型的设计?这是对典型ActiveRecord设计模式的重大改变,因此我不确定那里的大多数工具是否可以帮助那些决定使用他们的数据模型走这条路线的人.我对如何处理外键特别感兴趣,因为我甚至不确定将数据建模为支持MVCC的最佳方法.

Tim*_*and 3

我可能会考虑纯粹在数据库中实现 MVCC 层,使用存储过程和视图来处理我的数据操作。然后,您可以向任何能够映射到存储过程或从存储过程映射的 ORM 提供合理的 API,并且可以让数据库处理数据完整性问题(因为它几乎是为此构建的)。如果您这样做,您可能想看看更纯粹的映射解决方案,例如 IBatis 或 IBatis.net。