EntitySet的“结果视图”在哪里?
查看 LINQ to SQL 映射实体的链接 EntitySet
时,我看到以下内容:
我希望看到以下内容(通过使用 .AsQueryable()
扩展方法实现),以便我可以单击小刷新图标并查看内容:
为什么我看不到常规普通 EntitySet
上的结果视图?
另外,我注意到 此 MSDN 页面 上写着:
在 LINQ to SQL 中,
EntitySet
类实现IQueryable
接口。
据我所知, EntitySet
既不继承于 IQueryable
也不继承于 IQueryable
。那么这个说法是怎么回事呢?
When looking at a linked EntitySet<T>
of a LINQ to SQL mapped entity, I see the following:
I'd like to see the following (achieved by using the .AsQueryable()
extension method) so that I can click the little refresh icon and see the content:
Why can't I see the Results View on a regular plain EntitySet<T>
?
Also, I've noticed that on this MSDN page it says:
In LINQ to SQL, the
EntitySet<TEntity>
class implements theIQueryable
interface.
From what I can see, EntitySet<TEntity>
doesn't inherit from either IQueryable
nor IQueryable<T>
. So what's up with that claim?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您会找到这个问题的答案 问题
特别是#2,EntitySet实现 IList;因此调试器不会显示“结果视图”选项。
使用 AsQueryable 扩展方法返回一个仅实现 IQueryable 和 IEnumerable 的对象,因此将显示“结果视图”选项。
您可以在另一个问题的答案中阅读有关#2 的更多信息。
You'll find the answer to this question
In particular #2, EntitySet<T> implement's IList<T> therefore the debugger won't show a "Results View" option.
Using the AsQueryable extension method returns an object which only implements IQueryable and IEnumerable and therefore will show the "Results View" option.
You can read more about the #2 in the answer given in the other question.
您引用的页面上的术语可能有点偏离 - 因为 EntitySet 和 IQueryable 都派生自 IEnumerable,如果 EntitySet 直接实现 IQueryable 那么实现 IEnumerable 将是多余的。
AsQueryable() 的作用是将 EntitySet 转换为 EnumerableQuery (如第二张图片所示) - 只有在转换完成后才能看到结果视图。
由于 EntitySet 仅派生自 IEnumerable,因此这是有道理的 - 因为枚举器不返回集合,而是按顺序返回对集合中各个成员的引用。
The terminology on the page you reference may be a bit off - since both EntitySet and IQueryable derive from IEnumerable, if EntitySet implemented IQueryable directly then implementing IEnumerable would be redundant.
What AsQueryable() does is convert the EntitySet to an EnumerableQuery (as shown in your second image) - and only after that conversion is done can the result view be seen.
Since EntitySet only derives from IEnumerable, this makes sense - as Enumerators don't return sets but references to individual members in a set, in a sequential order.