Inheritance EF4:GetObjectStateEntries的OfType筛选器

Inheritance EF4:GetObjectStateEntries的OfType筛选器,inheritance,entity-framework-4,Inheritance,Entity Framework 4,我在datacontext中重写SaveChanges方法,并具有以下代码: IEnumerable<BaseEntity> newEntries = ObjectStateManager.GetObjectStateEntries(EntityState.Added).OfType<BaseEntity>(); IEnumerable newEntries=ObjectStateManager.GetObjectStateEntries(EntityState.Add

我在datacontext中重写SaveChanges方法,并具有以下代码:

IEnumerable<BaseEntity> newEntries = ObjectStateManager.GetObjectStateEntries(EntityState.Added).OfType<BaseEntity>();
IEnumerable newEntries=ObjectStateManager.GetObjectStateEntries(EntityState.Added).OfType();
在我的模型中,所有businessobjects都源自BaseEntity。当我向datacontext添加一个新的“投资”(也是从BaseEntity派生的!)时,上面的代码不会在结果集中显示该实体

GetObjectStateEntries(EntityState.Added)
但是返回一个类型为
投资的实体


为什么类型为
不能识别对象是否是派生的?

这是因为此查询返回类型为
ObjectStateEntry
的对象,并且此对象的实例有一个属性
实体
,它保存您的实体对象

试试这个:

var IEnumerable<BaseEntity> newEntries = ObjectStateManager
    .GetObjectStateEntries(EntityState.Added)
    .Select(e => e.Entity)
    .OfType<BaseEntity>();
var IEnumerable newEntries=ObjectStateManager
.GetObjectStateEntries(EntityState.Add)
.选择(e=>e.Entity)
.of type();

那么如何获取从BaseEntity派生的所有添加实体?