Поделиться через


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. Для компиляции и запуска этого запроса выполните следующие шаги.

  1. Выполните процедуру из статьи How to: Execute a Query that Returns StructuralType Results.

  2. Передайте следующий запрос в качестве аргумента методу ExecuteStructuralTypeQuery :

SELECT VALUE Key(CreateRef(AdventureWorksEntities.Products, 
    row(p.ProductID))) 
FROM AdventureWorksEntities.Products AS p

См. также