【发布时间】:2011-06-11 03:55:19
【问题描述】:
我在尝试解决问题时询问了few questions today。
我们有一个复杂的数据结构,其中所有各种实体都紧密互连,几乎所有实体都严重依赖/依赖于其他类型的实体。
该项目是一个网站(MVC3,.NET 4),所有的逻辑都是在业务层使用 LINQ-to-SQL (2008) 实现的。
我们需要做的是让用户在他们进行更改时“锁定”系统(还有其他与数据库无关的原因,我不会在这里讨论)。当该用户进行更改时,我们希望能够向他们展示他们正在更新的实体的原始状态,以及他们所做更改的“预览”。完成后,他们需要能够回滚/提交。
我们考虑了以下选项:
- 在用户进行多项更改所花费的时间长度内保持打开事务很糟糕,因此已经过时了。
- 在内存中保存所有数据的副本(或缓存到磁盘)是一种选择,但其中有很多,所以看起来不合理。
- 维护一组辅助表,或尝试使用会话状态来存储更改,但这很复杂且难以维护。
- 使用两个数据库,通过连接字符串在它们之间翻转,并使用 T-SQL 管理复制,在提交/回滚后将它们重新同步。 IE。开启/关闭、强制快照、反转方向等。
对于一个相对易于维护的解决方案,我们感到有些困惑。有什么建议吗?
【问题讨论】:
标签: asp.net sql-server linq-to-sql transactions session-state