【发布时间】:2016-03-02 07:34:18
【问题描述】:
我想将对数据库所做的更改存储在一个结构或其他东西中,以便我可以在数据库上下文结束后随时引用它们。我在 C# 中使用实体框架,在 SQL Server 中使用底层数据库。
我要存储的信息是
- 正在执行的数据库上下文
- 表名
- 更新列的先前值
- 更新列的新值
- 添加或删除的行 ID。
- 已执行操作(更新或删除或添加)
目前我以字符串的形式存储它们。但问题是,使用这种方法我无法重现 linq 查询,因此我可以恢复更改。
在这种情况下我该如何处理。提前致谢。
【问题讨论】:
-
您可以在
SaveChanges之前观察更改跟踪器(请参阅msdn.microsoft.com/en-us/library/…),在其后收集新添加项目的ID,并将此信息在您自己的模型中以稍后回放反转动作。 -
@Dennis 我可以在上下文 (SaveChanges) 结束后使用更改跟踪器吗?
-
SaveChanges重置更改跟踪器状态(即丢弃旧的更改数据)。当然SaveChanges之后可以访问,但是会是“空”的。 -
因此您可以在 SaveChanges 之前从跟踪器中复制内容,以便在 SaveChanges 之后使用。
-
@Dennis 谢谢丹尼斯。我想在保存更改后保留更改。有没有办法做到这一点,或者我可以将它们存储在其他地方吗?
标签: c# sql-server entity-framework linq