1

目前,我正在寻找一种在 [context].SubmitChanges() 中查找实体旧值的方法。

据我所知,只有新值出现。我真的需要查询数据库来获取实体的旧值吗?

GertArnold的解决方案:

    public override void SubmitChanges(System.Data.Linq.ConflictMode failureMode)
                {
                    // Get the changeset
                    ChangeSet changeSet = this.GetChangeSet();

                    // Put the updated objects into a IEnumerable
                    IEnumerable<object> updatedEntities = changeSet.Updates;

                    foreach (var entity in updatedEntities.Where(entity => AuditTypes.Contains(entity.GetType())))
                    {
                        var old = this.GetTable(entity.GetType()).GetModifiedMembers(entity);
                        // Do something with the old values
                    }

                    // Save the changes
                    base.SubmitChanges(failureMode);
                }
4

2 回答 2

3

看起来您正在寻找Table.GetModifiedMembers 方法

由于您需要实体的旧值因此此方法很有用。

于 2012-02-06T12:56:59.060 回答