Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 业务实体中字段更改跟踪的模式_C#_Design Patterns - Fatal编程技术网

C# 业务实体中字段更改跟踪的模式

C# 业务实体中字段更改跟踪的模式,c#,design-patterns,C#,Design Patterns,Iam正在对一些业务人员进行租赁办公室等工作。客户的一个要求是,该产品应能够跟踪特定实体的属性变化(如租户类别中的BusinessName属性)。我提出了一个解决方案,每个属性都有一个装饰类。将有一个日期“注意到更改”,因此基于该日期,我想用f.e BusinessNameDecorator:TenantDecorator:ITenant类结束原始的Tenant:ITenant类 原始溶液有点像 问题是,代码开始发出气味,并进入业务类。是否有任何经过验证的解决方案或模式用于跟踪更改并将其持久化到

Iam正在对一些业务人员进行租赁办公室等工作。客户的一个要求是,该产品应能够跟踪特定实体的属性变化(如租户类别中的BusinessName属性)。我提出了一个解决方案,每个属性都有一个装饰类。将有一个日期“注意到更改”,因此基于该日期,我想用f.e BusinessNameDecorator:TenantDecorator:ITenant类结束原始的Tenant:ITenant类

原始溶液有点像

问题是,代码开始发出气味,并进入业务类。是否有任何经过验证的解决方案或模式用于跟踪更改并将其持久化到业务实体中?我不想重新发明轮子,但不幸的是,我什么也没找到

谢谢你的帮助
注:对不起,我的英语不好:)

您可以尝试设置一个类似EF的POCO支持的机制。当您将POCOs与实体框架一起使用时,EF仍然能够跟踪实体对象上更改的属性

基本上,EF使用Reflection.Emit在运行时创建从POCO派生的类,并添加更改跟踪行为(前提是POCO的跟踪属性声明为虚拟)

实现这一点可能非常复杂,但如果必须将该机制应用于大量类,那么它可能非常值得