使用Entity Framework进行适当的更改日志记录?

时间:2012-02-28 15:31:06

标签: database entity-framework logging entity-framework-4

我想使用Entity Framework 4记录所有对SQL Azure数据库所做的更改。 但是,到目前为止我找不到合适的解决方案..

到目前为止,我可以通过重写SaveChanges()并使用ObjectStateManager来检索所有添加,修改和删除的实体来跟踪所有实体。这很好用。不幸的是,我似乎无法从RelationshipEntries中检索任何有用的信息。在我们的数据库模型中,我们有一些多对多的关系,我也想记录新的/修改/删除的条目。

我想将所有更改存储在Azure存储中,以便能够跟踪用户所做的更改,并可能回滚到以前版本的实体。

有没有什么好办法可以做到这一点?

编辑: 我们的场景是我们托管一个包含所有业务逻辑的RESTful WebService,并将数据存储在Azure SQL数据库中。客户端必须通过WebService进行身份验证,并且我需要存储用户更改数据的信息。

3 个答案:

答案 0 :(得分:3)

请参阅FrameLog,我为此目的编写的实体框架日志库。它是开源的,包括商业用途。

即使您不想使用该库,也可以查看代码以查看处理日志记录关系的一种方法。它处理所有关系的多重性。

特别是,请参阅the ChangeLogger class中的私有方法logRelationshipChange和logForeignKeyChange的代码。

答案 1 :(得分:2)

您可以使用tracing provider

答案 2 :(得分:0)

您可能需要考虑仅为此使用数据库触发器。每当更改表中的值时,将该行复制到另一个Archive表。它对我来说效果很好。