场景:用户键入复杂数据(WPF前端)并使用一些OR映射器将数据保存到SQLServer中。我使用Telerik的OpenAccess。
但是现在考虑以下情况:一个人几乎完成了一些用例的工作,但现在,一些信息丢失了。因为他输入的数据不符合所有业务规则(必填字段可能仍为空)他无法保存他的工作。
但不幸的是,他也无法得到遗漏的信息。那他能做什么呢。放弃整个工作,糟糕的想法,只是做什么而不是等待,没有好主意。
现在我的想法出现了。如果用户可以“停放”他未解决的问题并开始处理一些不同的用例,那将会很有帮助。并且,在他停工后,他能够关闭系统并在另一天尝试解决它。 (顺便说一下,他可以继续使用其他系统)
但是,在哪里序列化?业务对象不可序列化,因为它包含来自ORM的一些身份信息。介绍一些中间对象爆炸赋值语句。 UI?
也许,有人知道现有的解决方案,或者确实有一些不错的想法。
答案 0 :(得分:1)
使用状态字段来跟踪它是否符合所有规则。允许它保存而不考虑规则,但标记它。当它有效时改变标志。只允许其他用户查看/使用有效项目。
答案 1 :(得分:0)
Memento模式怎么样?获取所有可序列化数据并将其放入另一个类,然后将其序列化并将其保存到数据库中。再次需要时,反序列化到memento类,然后填充原始对象。