Как просмотреть изменения в EF-CodeFirst перед их фиксацией? - PullRequest
1 голос
/ 06 января 2011

Я пытаюсь отследить изменения, которые сохраняются в EF-Code. Сначала до их принятия.

Если мы сломаем во время SaveChanges (как показано ниже) и развернем часы (ниже), вы попадете в закрытую коллекцию ObjectStateManager._deletedEntityStore, в которой перечислены сохраненные элементы, которые должны быть удалены.

Это было бы идеально для того, что мне нужно, но это не публично. Кто-нибудь знает какой-либо другой способ получить эту информацию?

(this.Units.Local недостаточно.)

public class MyDbContext: DbContext
{   
    public DbSet<Unit> Units { get; set; }  
    public override int SaveChanges()
    {
        // Break here...
    }
}

this.ChangeTracker._internalContext.ObjectContext.ObjectStateManager._deletedEntityStore

Ура, T

1 Ответ

2 голосов
/ 06 января 2011

Вы можете добраться до базового ObjectContext, приведя ваш DbContext к IObjectContextAdapter.Оттуда вы сможете подключиться к ObjectStateManager.

Фактически, если базовый ObjectContext действительно важен, вы можете выставить его как открытое свойство.Вот так:

public ObjectContext UnderlyingContext
{ 
    get
    {
        return ((IObjectContextAdapter)this).ObjectContext;
    }
}
...