我必须开发一种机制来检查两个对象属性的变化 检查所需的所有属性都标有属性。
Atm i
- 通过linq
从acutal对象中读取所有属性
- 从旧对象中读取相应的属性
- 使用两个属性(旧值和新值)填充自己的对象
在Code中,对workerclass的调用如下所示
public void CreateHistoryMap(BaseEntity actual, BaseEntity old)
{
CreateHistoryMap(actualEntity, oldEntity)
.ForEach(mapEntry => CreateHistoryEntry(mapEntry),
mapEntry => IfChangesDetected(mapEntry));
}
CreateHistoryMap 构建包含两个属性的HistoryMapEntry。
CreateHistoryEntry 构建保存到数据库的对象, IfChangesDetected 检查对象是否有更改。
我必须处理自己的特殊应用程序类型以生成数据库的历史值(比如汇总列表值等)。
我现在的问题是,我必须两次读取属性的值
- 用于变化检测
- 以及对于concreate CreateHistoryEntry
如何消除此问题或如何使用优秀的c#3.5功能实现更改跟踪方案?
非常感谢。
答案 0 :(得分:1)
您可以采用CSLA.NET框架采用的方法,该框架具有可撤销对象(以及用于数据绑定的属性更改跟踪)。它是一个非常干净的实现,放在业务对象的基类中,以获得您简单派生的好处。
链接: http://www.lhotka.net/cslanet/
有问题的类是BusinessBase和UndoableBase - 您也可以只删除更改跟踪代码并完成剩下的工作 - 虽然CSLA.NET设计得很好,但业务对象中嵌入了很多逻辑。