【发布时间】:2013-07-20 16:43:28
【问题描述】:
我在网上看到的大多数示例都显示了 WinForms/WPF 上下文中的对象更改跟踪。或者,如果它在网络上,则使用连接的对象,因此可以跟踪对每个对象所做的更改。
在我的场景中,对象一旦离开数据层就会断开连接(映射到 WCF 中的业务对象,并映射到 MVC 应用程序上的 DTO)
当用户对 MVC 上的对象进行更改(例如,更改 1 个字段属性)时,我如何将更改从视图发送到数据库?
我想要一个审核表,用于保存对特定对象所做的更改。我要保存的是对象的前后值,仅用于我们修改的属性
我能想到几种方法来做到这一点
1) 为 MVC 层(或 javascript?)中的所有模型的每个属性实现一个 IsDirty 标志。将该信息一直传播到服务层,最后是数据层。
2) 在服务层中拥有这种更改跟踪机制会很棒,但是在从 MVC 传回修改后的值之后,我将如何跟踪“原始”值?
3) 数据库触发器?但我不确定如何开始。这甚至可能吗?
对于 n 层 mvc-wcf 解决方案,是否有任何已知的对象更改跟踪实现?
审计表示例:
Audit table
Id Object Property OldValue NewValue
--------------------------------------------------------------------------------------
1 Customer Name Bob Joe
2 Customer Age 21 22
【问题讨论】:
-
+1 当用户对 MVC 上的对象进行更改(例如,更改 1 个字段属性)时,我如何将更改从视图发送到数据库? 你能解释一下吗?
-
为更清晰而编辑
-
只需映射回 ORM 类(实体框架?)并调用
SaveChanges()。你有什么问题? -
@The8thBit :这意味着在运行时,每当特定对象的值发生变化时...,您想通过保存在数据库中来跟踪它?
-
我想将 的前后值保存到对象审计表中
标签: c# asp.net-mvc inotifypropertychanged n-tier-architecture change-tracking