Да, это Entity SQL.
«LINQ to Entities» - это один из способов получения экземпляров сущностей из вашего контекста. Entity SQL - это другое. Оба работают, поддерживаются и дополняют друг друга.
SELECT VALUE означает «этот оператор должен возвращать экземпляры сущности». (В отличие от оболочки строк.) Вы получите запрос объекта назад.
Теперь, что такое "это"? Итак, Client - это свойство сгенерированного ObjectContext типа ObjectQuery . Вы можете посмотреть исходный код для клиента в файле codegen для модели (файл с расширением .Designer.cs):
/// <summary>
/// There are no comments for Client in the schema.
/// </summary>
public global::System.Data.Objects.ObjectQuery<Client> Client
{
get
{
if ((this._Client== null))
{
this._Client = base.CreateQuery<Client>("[Client]");
}
return this._Client;
}
}
private global::System.Data.Objects.ObjectQuery<Client> _Client;
Вы видите там Entity SQL? Это легко пропустить, если вы не посмотрите внимательно. Я скопирую это сюда:
"[Client]"
Я не могу найти документацию по этому синтаксису, но это в основном потому, что поиск в квадратных скобках, а НЕ в любом другом ключевом слове Entity SQL, довольно сложен для большинства поисковых систем. Как и в T-SQL, квадратные скобки означают «рассматривайте все, что находится между ними, как идентификатор». Но это заявление выглядит как сокращение для:
"SELECT VALUE it FROM MyEntities.[Client] AS it"
Так что теперь вы знаете, откуда это "исходит".