我正在尝试窥探在提交之前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
干杯, Ť
答案 0 :(得分:2)
您可以通过将DbContext强制转换为IObjectContextAdapter来获取基础ObjectContext。从那里你应该能够连接到ObjectStateManager。
实际上,如果底层ObjectContext非常重要,您可以将其公开为公共属性。像这样:
public ObjectContext UnderlyingContext
{
get
{
return ((IObjectContextAdapter)this).ObjectContext;
}
}