我正在使用 EF 在 MVC3 应用程序中构建某种审计行为,并且我尝试了几种方法,试图避免对代码的高影响,当然,尽量避免额外的代码,因为申请已经完成了 35%。
Audit
对象看起来像这样:
- 审计 ID
- 用户身份
- 操作 ID
- 模块 ID
- 时间戳
- 有效载荷
- < 模块 >
- < 操作 >
- <用户>
思路如下:
我创建了一个部分类来隐藏SaveChanges()
和覆盖SaveChanges(SaveOptions)
。
然后我创建了两个相同方法的重载来接收我的实体作为参数和/或不是SaveOptions
枚举参数。
除了明显之外,新SaveChanges()
的设置了我的实体的属性Audit
,但问题发生在这里:我需要 aUser
和Module
an Operation
。
我目前解决这个问题的解决方案如下:
- 我已经
Audit
在构造函数类级别声明了一个对象。 - 在控制器的构造函数中,我将 设置
User
为我的Audit
对象。 - 在每种方法中,我都
Operation
根据需要设置。 - 在保存更改中,我处理来自
ObjectStateManager
.
I'm very skeptic about this approach, it seems to be a little intrusive to my code. I've read lots of posts here in SO, but none of them helped me to improve this approach nor decide to change it. So please avoid linking things I've probably already read.