我有某些实体拥有审计跟踪元素,如LastUpdated和LastUpdatedBy。我希望确定最适合的方式,以便在更改模型时将这些字段更新为当前日期和时间以及当前用户。
最简单的实现是在更新objectcontext之前影响我的控制器中的这种更改,但这会导致大量重复的代码。我可以稍微重构一下,并且可能创建一个我可以调用并传递模型的辅助方法,从而减少我控制器中的单行代码,但老实说这是自动的,控制器代码不必担心约。
以前有人接触过这个问题吗?你的解决方案是什么?你有什么建议?
(ps mvc和ef noob所以可能存在我缺少的框架类型选项)
答案 0 :(得分:2)
我遵循与@Nix类似的模式,只是我没有使用T4,因为我更喜欢代码优先开发而不是设计器。如果您有一个名为Context
的{{1}},则可以对其进行部分分类以覆盖MyDbContext
方法。我还有一个SaveChanges()
类,我所有必要的实体都来自。
IAuditable
答案 1 :(得分:0)
我做过这样的事情,我使用了T4模板。请参阅:Entity Framework Trigger Like Auditing
基本上我只是让所有实体都扩展了一个接口,然后在SaveChanges中迭代所有“IAuditable”并设置更新/插入日期。
为我们工作得很好,但我们也经历过并且每个实体都确保审计字段具有相同的名称。完成后,可以轻松地为包含审计字段的表自动生成自定义代码。感谢有道理?