0

我在 SE 上看过很多与此相关的帖子,但没有一个能令人满意地回答这个问题。如果有帖子确实回答了这个问题(带有实际的代码示例),那么请指出我的方向。

保存对象时,我需要将信息写入日志。我需要知道原始值和新值。这对于父对象来说非常容易,甚至可以很容易地在任何更改的子对象上获取新值。挑战在于获取子对象的原始值。

例如,用户通过下拉列表更改子对象。这会更改父级外键的值。保存时,我需要在日志中写入更改实体的文本描述(ToString() 值或其他值),而不是外键的值。

ObjectStateEntry 包含父对象的当前值和原始值,但是如何获取更改后的子对象的当前值和原始值?

看起来这应该是可能的,但要么太难完成,要么被微软设计团队忽视了。

提前感谢您的帮助。

4

1 回答 1

0

你总是以同样的方式得到它:你查一下。请记住,在您的情况下,甚至可能不会从数据库加载“子对象”。在更改“父级”上的 FK 值之前,不需要这样做。

听起来您实际上并没有更改“子对象”本身。相反,您只是将“父”更改为指向不同的子对象。

在这种情况下,我将使用 Context.GetObjectByKey() 根据原始 FK 值拉取对象。如果它碰巧被加载,它会从内存中抓取它,如果没有,它会从数据库中抓取。

于 2011-06-16T14:43:19.540 回答