EF4:GetObjectStateEntries的OfType过滤器

时间:2011-04-13 08:23:50

标签: inheritance entity-framework-4

我覆盖了我的datacontext中的SaveChanges方法,并拥有以下代码:

IEnumerable<BaseEntity> newEntries = ObjectStateManager.GetObjectStateEntries(EntityState.Added).OfType<BaseEntity>();

在我的模型中,所有businessobjects都来自BaseEntity。当我向我的datacontext添加一个新的'Investment'(也来自BaseEntity!)时,上面的代码不会在结果集中显示这个实体。

然而,

GetObjectStateEntries(EntityState.Added)会返回一个Investment类型的实体。

为什么OfType<>无法识别是否派生了某个对象?

1 个答案:

答案 0 :(得分:2)

因为此查询返回类型为ObjectStateEntry的对象,并且此对象的实例具有保存实体对象的属性Entity

试试这个:

var IEnumerable<BaseEntity> newEntries = ObjectStateManager
    .GetObjectStateEntries(EntityState.Added)
    .Select(e => e.Entity)
    .OfType<BaseEntity>();