2012-02-06 2 views
0

На данный момент я ищу способ найти старые значения сущности в [context] .SubmitChanges().Linq to SQL - Audit Trail (найти старые значения в 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); 
       } 
+0

Возможный дубликат [Linq to SQL: получение старых значений измененных строк] (http://stackoverflow.com/questions/1852533/linq-to-sql-getting-old-values-of-changes-rows) –

+0

@WouterdeKort Я видел сообщение действительно, но в нем не указано, как получить кеш. Также, когда я просматриваю свои объекты SubmitChanges, я вижу новые значения, даже не вызывая обновление. – Julian

ответ

3

Похоже, вы ищете Table.GetModifiedMembers method.

Как вы хотите, старые значения a объект, этот метод полезен.

+0

Спасибо, это было то, что я искал! – Julian

0
+0

Я уже нашел эту ссылку в google, хотя мы не хотим использовать библиотеки сторонних сторон для решения. – Julian

+0

Ваша вторая ссылка заставит меня изменить все сущности. Это не то, что я хотел бы сделать. Спасибо за ответ, но мне действительно нужен способ получить старые значения. И если это невозможно, я бы тоже хотел это знать. – Julian

Смежные вопросы