DbContext SaveChanges () - Обнаружение обновленных сущностей

Я переопределил метод SaveChanges () в классе Entity Framework 4.1 DbContext.

Мое переопределение выглядит следующим образом:

public override int SaveChanges() {

    IEnumerable<DbEntityEntry> modifiedEntityEntries = ChangeTracker.Entries().Where( e => e.State == EntityState.Modified );

    Debug.Assert( modifiedEntityEntries.Count() == 2 );

    int savedChanges = base.SaveChanges();

    Debug.Assert( savedChanges == 1 );

    // HELP! At this point, how do I tell Which of the two "Modified" entities actually updated a row in the database?

    return savedChanges;

}

Предположим, что в контексте есть 2 объекта, и оба помечены как измененные (EntityState.Modified). Одна из них была изменена и отличается от базовой строки базы данных. Другой на самом деле не отличается от базовой строки базы данных, он просто был отмечен как таковой.

Как узнать после вызова SaveChanges (), какая из двух сущностей действительно обновила строку в базе данных, а какая не была изменена в конце концов?

6
задан FantasticJamieBurns 14 November 2011 в 20:40
поделиться