我覆盖了我的datacontext中的SaveChanges方法,并拥有以下代码:
IEnumerable<BaseEntity> newEntries = ObjectStateManager.GetObjectStateEntries(EntityState.Added).OfType<BaseEntity>();
在我的模型中,所有businessobjects都来自BaseEntity。当我向我的datacontext添加一个新的'Investment'(也来自BaseEntity!)时,上面的代码不会在结果集中显示这个实体。
然而, GetObjectStateEntries(EntityState.Added)
会返回一个Investment
类型的实体。
为什么OfType<>
无法识别是否派生了某个对象?
答案 0 :(得分:2)
因为此查询返回类型为ObjectStateEntry
的对象,并且此对象的实例具有保存实体对象的属性Entity
。
试试这个:
var IEnumerable<BaseEntity> newEntries = ObjectStateManager
.GetObjectStateEntries(EntityState.Added)
.Select(e => e.Entity)
.OfType<BaseEntity>();