EF4:用于GetObjectStateEntries的OfType过滤器

问题描述

|| 我在我的数据上下文中覆盖了SaveChanges方法,并具有以下代码
IEnumerable<BaseEntity> newEntries = ObjectStateManager.GetobjectStateEntries(EntityState.Added).OfType<BaseEntity>();
在我的模型中,所有业务对象均源自BaseEntity。当我在我的数据上下文中添加新的\'Investment \'(也来自BaseEntity!)时,上面的代码将不会在结果集中显示此实体。 但是,
GetobjectStateEntries(EntityState.Added)
返回一个类型为
Investment
的实体。 为什么
OfType<>
不能识别对象是否派生?     

解决方法

那是因为此查询返回类型为“ 4”的对象,并且该对象的实例具有属性“ 5”,该属性保存您的实体对象。 尝试这个:
var IEnumerable<BaseEntity> newEntries = ObjectStateManager
    .GetObjectStateEntries(EntityState.Added)
    .Select(e => e.Entity)
    .OfType<BaseEntity>();