Почему AsQueryable() для класса DBSet отсутствует в документации MSDN?

Эта ссылка описывает класс DBSet. Этот тип реализует IQueryable, что означает, что он должен иметь реализацию для AsQueryable(). Но в списке в ссылке я не могу найти этот метод. Может кто-нибудь сказать мне, почему?

2 ответа

Решение

Мой первоначальный ответ, хотя, надеюсь, полезный, был не совсем верным, как указал Эли Арбель, поэтому я переписал его.

DbSet<TEntity> класс имеет сложную иерархию наследования. Вот диаграмма UML, показывающая только ее часть.

Иерархия наследования DbSet

Метод AsQueryable<TEntity>() это метод расширения, определенный на IEnumerable<TEntity> который преобразует IEnumerable<TEntity> в IQueryable<TEntity> и в качестве DbSet<TEntity> инвентарь IEnumerable<TEntity> Вы можете использовать метод расширения:

IQueryable<MyEntity> queryable = myDbSet.AsQueryable();

Тем не менее, это не очень полезно, потому что DbSet<TEntity> также реализует IQueryable<TEntity> так зовет AsQueryable() просто вернет IQueryable<TEntity> интерфейс. Вы могли бы также написать приведенный выше фрагмент как:

IQueryable<MyEntity> queryable = myDbSet;

Это поведение объясняется в документации для Queryable.AsQueryable() какая документация вы ищете.

Правильно, что связанная страница документации включает в себя множество методов расширения, но, поскольку набор возможных методов расширения в принципе не ограничен, нет гарантии, что все методы расширения будут в списке. В частности оба AsQueryable() а также AsEnumerable() не хватает.

Документация MSDN часто крайне противоречива в том, как они документируют вещи. Если вам это не нравится, внизу каждой страницы есть ссылка, чтобы оставить свой отзыв.

В этом случае они перечислили интерфейсы, которые реализованы явно, и дают ссылки на эти интерфейсы, предполагая, что вы достаточно умны, чтобы знать, что им следовать.

Редактировать: Я думаю, что люди неверно истолковали мой комментарий "если вы достаточно умный", как что-то вроде подавления. Я имел в виду, что авторы MSDN предполагают, что вы достаточно умны, чтобы следовать им, поэтому им не нужно дублировать все.

Другие вопросы по тегам