该要求看起来很简单:当数据发生变化时,审核更改。EF或SQL是审计数据更改的更好选择吗?
下面是一些重要的部分公式:
- 数据在我的应用跨越多个表(一些交叉参考表)。
- 我的DTO很深,导航属性有条件地填充。
- 加载时,我用原始值复制原始DTO。
- 当请求保存时,原始DTO包含更改。
- 理想情况下,外键会像有用的文本一样读取而不是Id号码。
与TFS的酷历史功能不同,由于许多相关的表和有条件的子实体,我的看起来更复杂。
我看到三种可能性(到目前为止):
- 我可以使用C#来反映的对象和创建前/后记录。
- 我可以使用SQL 2008R2中的触发器捕获更改并合并前/后记录。
- 我可以在对象之前/之后存储原始数据,并让SQL 2008R2解析它们。
请注意:现在,我认为SQL 2008R2的CDC太过于沉重的选择了。我真的在寻找我可以建立的东西,但我承认我的想法现在对任何事情都是开放的。
我的问题
之前,我开始构建这样的: 如何其他人办理审计一个复杂的EF DTO?
是否有可用的低(ish)技术解决方案?
预先感谢您。
相关,但不是-完全相关的StackOverflow上已经问题:Implementing Audit Log/Change History with MVC & Entity Framework和Create Data Audit in SQL Server和https://stackoverflow.com/questions/5773419/how-to-audit-many-to-many-relationship-in-entity-framework和Maintaining audit log for entities split across multiple tables和Linq to SQL Audit Trail/Audit Log: should I use triggers or doddleaudit?没有提供答案。
不确定为什么不列出SQL Server的本机审计功能作为选择。 –
对不起@Craig,你对我的DBA做了一个错误的假设。这仅仅是他们目前的技能组合之外,并且会给解决方案团队造成一场噩梦(并且无休止的延迟),从IT中要求它。这里只是一个现实,这就是我排除它的原因。 –
那么,即使他们还不知道,至少有文件证明。 –