CREATEREF (Entity SQL)
Формирует ссылки на сущность в наборе сущностей.
Синтаксис
CreateRef(entityset_identifier, row_typed_expression)
Аргументы
entityset_identifier
Идентификатор набора сущностей, а не строковый литерал.
row_typed_expression
Выражение типа строки таблицы, соответствующее свойствам ключа типа сущности.
Замечания
Выражениеrow_typed_expression
должно быть структурно эквивалентно типу ключа для данной сущности. Это значит, что оно должно иметь такое же число и типы полей, расположенные в том же порядке, как и ключи сущности.
В приведенном далее примере Orders и BadOrders являются наборами сущностей типа Order, и предполагается, что идентификатор Id является единственным свойством ключа для типа Order. Этот пример иллюстрирует, как можно сформировать ссылку на сущность в наборе сущностей BadOrders. Отметим, что ссылка может быть висячей. Это значит, что в действительности ссылка может не указывать на конкретную сущность. В этом случае оператор DEREF
для этой ссылки возвратит значение null.
SELECT CreateRef(LOB.BadOrders, row(o.Id))
FROM LOB.Orders AS o
Пример
В следующем запросе Entity SQL оператор CREATEREF используется для формирования ссылок на сущность в наборе сущностей. Запрос основан на модели AdventureWorks Sales. Для компиляции и запуска этого запроса выполните следующие шаги.
Выполните процедуру из статьи How to: Execute a Query that Returns StructuralType Results.
Передайте следующий запрос в качестве аргумента методу
ExecuteStructuralTypeQuery
:
SELECT VALUE Key(CreateRef(AdventureWorksEntities.Products,
row(p.ProductID)))
FROM AdventureWorksEntities.Products AS p