Какую проверку необходимо выполнить IQueryProvider.CreateQuery, чтобы гарантировать возможность оценки аргумента выраженC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Какую проверку необходимо выполнить IQueryProvider.CreateQuery, чтобы гарантировать возможность оценки аргумента выражен

Сообщение Anonymous »

Из документации метода IQueryProvider.CreateQuery:

CreateQuery(Expression):
Создает объект IQueryable, который может оценить запрос
, представленный указанным деревом выражений.

Как создается -in EnumerableQuery проверяет, может ли он оценить запрос:

Код: Выделить всё

IQueryable IQueryProvider.CreateQuery(Expression expression) {
ArgumentNullException.ThrowIfNull(expression);

if (!typeof(IQueryable).IsAssignableFrom(expression.Type)) {
throw Error.ArgumentNotValid(nameof(expression));
}
return new EnumerableQuery(expression);
}
а также реализация EntityQueryProvider ef-core:

Код: Выделить всё

public virtual IQueryable CreateQuery(Expression expression)
=> new EntityQueryable(this, expression);

...
public EntityQueryable(IAsyncQueryProvider queryProvider, Expression expression) {
_queryProvider = queryProvider;
Expression = expression;
}
В первом случае мы получаем минимальную проверку того, что Expression.Type является IQueryable, а во втором проверка отсутствует. Таким образом, кажется, что CreateQuery на практике может быть просто фабричным методом с минимальной проверкой или вообще без нее.
Я знаю, что было бы немного непрактично и медленно посещать дерево и проверим, сможем ли мы использовать его для успешного вызова Execute() позже.
Если это не то, что означает «можно оценить», означает ли это что-то конкретное или это должно быть полностью игнорируется?

Подробнее здесь: https://stackoverflow.com/questions/788 ... ure-that-i
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»