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


Работа с объектами, связанными с данными, в коде

LightSwitch создает объекты и члены, которые описывают используемые данные. Имена этих объектов и членов совпадают с именами элементов в решении. Например, при добавлении таблицы Customer LightSwitch создает объект с именем Customer. В этом разделе описываются все типы объектов, создаваемых LightSwitch. Примеры кода, где эти объекты и члены используются для выполнения распространенных задач, связанных с обработкой данных, см. в разделе Выполнения задач, связанных с данными, с помощью кода.

Иерархия создаваемых объектов и членов

На следующем рисунке показаны создаваемые объекты и члены модели данных.

Иерархия созданных объектов

Приложение

Объект Application обеспечивает доступ верхнего уровня к объектам приложения. Для доступа к объекту Application откройте любой файл пользовательского кода в редакторе кода и введите Application. Набор доступных методов и свойств, которые отображаются в IntelliSense после ввода Application и точки ".", будет изменяться в соответствии с типом файла, в котором создается код. В большинстве случаев можно использовать свойство объекта Application для получения объекта, который представляет текущего пользователя.

Рабочая область данных

Объект DataWorkspace — это объект верхнего уровня для всех операций доступа к данным. Объект DataWorkspace содержит свойство для каждого источника данных в проекте. Например, если в проекте есть источник данных NorthwindData, LightSwitch создает свойство с именем NorthwinddData. Если ввести DataWorkspace в редакторе кода, в раскрывающемся списке становится доступно свойство NorthwindData.

На следующем рисунке показаны некоторые созданные члены, которые могут отображаться в раскрывающемся списке.

Свойства источника данных объекта DataWorkspace

Data Source

LightSwitch создает объект для каждого источника данных в проекте. Этот объект содержит члены, которые можно использовать для обращения к данным. Члены объекта источника данных содержат свойства наборов сущностей и методы запроса.

На следующем рисунке показаны некоторые созданные члены, которые могут отображаться в раскрывающемся списке.

Члены объекта источника данных

Свойства набора сущностей

Свойство набора сущностей возвращает коллекцию сущностей. LightSwitch создает свойство набора сущностей для каждой сущности в источнике данных. Например, если в источнике данных имеется сущность Customer, LightSwitch создает свойство с именем Customers. Свойство Customers можно использовать для получения объекта EntitySet, который представляет коллекцию сущностей Customer.

Объект EntitySet также содержит члены, с помощью которых можно проверить, имеет ли текущий пользователь разрешение на чтение, обновление или удаление сущностей коллекции. Для получения дополнительной информации см. Выполнения задач, связанных с данными, с помощью кода.

Примечание

EntitySet — это один из нескольких типов объектов коллекции сущностей.Чтобы производительность кода была максимальной, тип объекта коллекции сущностей должен соответствовать типу разрабатываемой бизнес-логики.Дополнительные сведения см. в разделе Объекты и производительность коллекции сущностей.

Методы запроса

Метод запроса получает результаты запроса. LightSwitch создает отдельный метод для каждого запроса, определенного в источнике данных. Имя метода совпадает с именем запроса. Запрос может возвращать отдельную сущность или коллекцию сущностей типа IDataServiceQueryable.

Примечание

IDataServiceQueryable<T> — это один из нескольких типов объектов коллекции сущностей.Чтобы производительность кода была максимальной, тип объекта коллекции сущностей должен соответствовать типу разрабатываемой бизнес-логики.Дополнительные сведения см. в разделе Объекты и производительность коллекции сущностей.

По умолчанию LightSwitch создает следующие методы запроса для каждой сущности в источнике данных.

  1. <Имя сущности>_Single.

  2. <Имя сущности>_SingleOrDefault.

Оба эти метода принимают сегмент первичного ключа и возвращают отдельный объект сущности. Если сущности не возвращаются, метод <Имя сущности>_Single вызывает исключение, а метод <Имя сущности>_SingleOrDefault возвращает значение Null (значение Nothing в Visual Basic).

Сущности

LightSwitch создает объект EntityObject для каждой сущности в коллекции. Например, если бы код извлекал коллекцию заказов, в ней бы содержался объект EntityObject, который представляет каждый заказ. Элемент EntityObject содержит члены, которые можно использовать для удаления сущности, чтения или обновления значений свойств сущности, а также для получения связанных сущностей. Можно получить объект EntityObject из объекта коллекции сущностей, например из EntitySet, или посредством вызова метода запроса, который возвращает сущность. Для получения дополнительной информации см. Выполнения задач, связанных с данными, с помощью кода.

На следующем рисунке показаны члены сущности Order с именем myOrder. Сущность Order содержит свойства сущности, такие как OrderDate, OrderID и Freight. Сущность Order также содержит члены, которые можно использовать для получения связанной коллекции Order_Details и объекта Customer, который использовался для размещения заказа.

Свойства объекта сущности

В этом примере свойство Customer возвращает сущность Customer. Сущность Customer находится на стороне "один" отношения Customer-Order.

Свойство Order_Details возвращает коллекцию сущностей Order_Details. Сущность Order_Details находится на стороне "многие" отношения Order-Order_Details. Объект коллекции Order_Details имеет тип EntityCollection.

На этом рисунке также показано свойство с именем Order_DetailsQuery. Свойства, которые заканчиваются словом Query, возвращают объект IDataServiceQueryable.

Примечание

EntityCollection и IDataServiceQueryable — это типы, представляющие объекты коллекции сущностей.Чтобы производительность кода была максимальной, тип объекта коллекции сущностей должен соответствовать типу разрабатываемой бизнес-логики.Дополнительные сведения см. в разделе Объекты и производительность коллекции сущностей.

Объекты и производительность коллекции сущностей

При использовании в выражении LINQ объекта коллекции сущностей LightSwitch выполняет операцию, которая извлекает сущности с уровня сервера. В зависимости от используемого типа объекта LightSwitch извлекает все сущности в коллекции или только их часть. Чтобы обеспечить правильную работу кода, выберите наиболее подходящий тип объекта коллекции для разрабатываемой бизнес-логики. Существует два типа объектов коллекции сущностей: объекты, которые инициируют в LightSwitch удаленное вычисление выражения LINQ, и объекты, которые инициируют в LightSwitch локальное вычисление выражения LINQ.

Операции LINQ: удаленное илокальное выполнение

Если в выражении LINQ используется объект EntitySet или IDataServiceQueryable, LightSwitch передает все выражение LINQ в службу данных на уровне сервера. Затем результаты выражения передаются обратно в вызывающий код. Этот тип выполнения запросов обеспечивает высокую эффективность, поскольку в вызывающий код возвращаются только те сущности, которые удовлетворяют запросу. Однако служба данных поддерживает только некоторые операторы запросов. Если в выражение необходимо включить другие операторы LINQ, рекомендуется использовать другие типы объектов коллекции.

На следующем рисунке показано выражение LINQ, в котором используется объект IDataServiceQueryable. В этом примере показана операция LINQ, которая передает все выражение в службу обработки данных и возвращает только сущности Order, которые удовлетворяют условиям запроса.

Удаленное выполнение выражения запроса

Если в выражении LINQ используется объект EntityCollection или IEnumerable, LightSwitch не передает выражение в службу данных. Вместо этого LightSwitch извлекает все сущности заданного типа. Затем выражение применяется локально ко всей коллекции. Если коллекция сущностей имеет большой размер, этот тип выполнения запроса может снизить производительность. Однако в коде можно использовать полный набор операторов LINQ. Кроме того, такой подход может быть полезен в тех случаях, когда необходимо передать все сущности коллекции в другие методы кода.

На следующем рисунке показано выражение LINQ, в котором используется объект EntityCollection. В этом примере показана операция LINQ, которая извлекает все сущности Order для конкретного клиента. Затем условия запроса применяются локально ко всей коллекции.

Локальное выполнение выражения запроса

Примеры. Получение объектов коллекции сущностей в коде

Ниже показан способ получения коллекций сущностей Order в примере базы данных Northwind.

Объект коллекции сущностей, который требуется получить

Используемый код

Удаленное или локальное выполнение

EntitySet

DataWorkspace.Northwind.Orders

или

myOrder.Details.EntitySet()

Удаленное

IDataServiceQueryable

myCustomer.OrdersQuery

или

DataWorkspace.Northwind.Orders.GetQuery()

Удаленное

EntityCollection

myCustomer.Orders

Локальная

IEnumerable

myCustomer.OrdersQuery.Execute()

или

DataWorkspace.Northwind.Orders.GetQuery().Execute()

Удаленное

См. также

Основные понятия

Выполнения задач, связанных с данными, с помощью кода

Другие ресурсы

Данные: источники сведений для приложения