用于处理断开的数据库关系的业务层



有些数据库表存储数据副本,不幸的是,这些表的原始作者在需要时没有设计使用关系(FK、Guid等(来引用数据,而是实际将数据本身复制到其他表中。。也许这是为了减少开销,并使在一个查询中检索所有必要的信息变得更容易。

现在显然出现了问题,因为另一个人编写了这样的代码,比如说,当"表A"中的"数据1"也在"表B"one_answers"表C"中时,用户可以修改"表A中的数据1"。至少这并不是完全没有希望的,因为"表A"中还有另一列,比如"键1",当复制到"表B"one_answers"表C"时,它可以与"数据1"成对使用,所以至少当用户更改时,关系不会丢失。

目前,代码使用asp.net MVC模式,我知道修复可能取决于代码的编写方式,但有人知道这样的问题的已知修复方法吗?设计模式、体系结构等。目前,重新设计数据库模式不是一种选择,需要向后兼容,这意味着应该能够在没有密钥的情况下处理旧格式,但该计划正在更新已经存储的数据,最终使其具有密钥。

最适合的设计模式是"反腐败层"。其目的是通过在其周围构建一层来隔离问题,使其他系统能够像一切正常一样工作。

在MVC应用程序中,这几乎肯定需要介于"模型"代码和持久层之间。例如,您可以引入一个名为"Save_to_business_concept_a"的方法;这将根据当前逻辑操作表A、B和C。

一旦应用程序通过反腐败层,就可以进行重构。

最新更新