如何在提交之前查看EF-Code First中的更改?

时间:2011-01-06 10:38:59

标签: entity-framework c#-4.0 code-first

我正在尝试窥探在提交之前EF-Code First 中持续存在的更改。

如果我们在SaveChanges期间(如下所示)中断并向下钻取手表(下方),则会转到非公开集合ObjectStateManager._deletedEntityStore,其中列出了要删除的已删除项目。 / p>

这对我需要的东西来说是理想的,但它不是公开的。有没有人知道有任何其他方式来获取这些信息?

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

干杯, Ť

1 个答案:

答案 0 :(得分:2)

您可以通过将DbContext强制转换为IObjectContextAdapter来获取基础ObjectContext。从那里你应该能够连接到ObjectStateManager。

实际上,如果底层ObjectContext非常重要,您可以将其公开为公共属性。像这样:

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