实体框架4:为什么我不能获得派生实体的ObjectSet而不是ObjectQuery?

| 我有一个衍生自\“ BaseEntity \”的\“ Investment \”实体。 使用“ 0”,我得到一个总是查询数据库的ObjectQuery。 因此,我宁愿有一个“ 1”。 我不明白为什么EF不支持派生实体的此功能...还是呢? ;) 如果我继续在EF中创建一个“根实体”(这很愚蠢),它与我的所有派生实体都有关联,那么我将通过该根实体的导航属性获得这些实体的EntityCollections。但是必须有另一种方式... 干杯
已邀请:
这就是它在EF ObjectContext API中的工作方式。如果您尝试为派生实体创建
ObjectSet
,您将获得: ArgumentException:没有 为指定定义的EntitySet 实体类型“投资”。如果 \'Investment \'是派生类型,使用 基本类型。参数名称: 实体 同样,一旦定义了继承,就没有指向派生实体的导航属性。提供导航属性的关联更改为继承。 我还遵循了您以前的问题,这很可能是这个问题的根源,我不得不说我做了很多尝试,但是我永远无法听清您的举止。即使我直接将Count调用到
ObjectSet
,我也总是得到SQL查询(在事件探查器中选中)和数据库中实体的数量-而不是集合中的实体。
ObjectQuery<T>
并不总是查询数据库。这只是一个查询规范-在这种情况下,该规范返回所有类型为“ 5”的BaseEntities。您可以将其与其他过滤器或orderby子句或投影等组合在一起。除非您应用诸如
ToList()
First()
等之类的贪婪运算符,或者直到您应用foreach循环来获取结果,否则数据库中什么都不会执行。

要回复问题请先登录注册