Udostępnij za pośrednictwem


Praca z obiektami związanymi z danymi w kodzie

LightSwitch generuje obiekty i elementy członkowskie, które opisują dane.Nazwy tych obiektów i elementów członkowskich odpowiadają nazwom elementów w rozwiązaniu.Na przykład jeżeli dodano tabelę o nazwie Customer, LightSwitch generuje obiekt o nazwie Customer.W tym temacie opisano każdy typ obiektu, który jest generowany przez LightSwitch.Aby wyświetlić przykłady kodu, które wykorzystują te obiekty i elementy członkowskie do wykonywania typowych zadań związanych z danymi, zobacz Wykonywanie zadań związanych z danych przy użyciu kodu.

Hierarchia wygenerowanych obiektów i elementów członkowskich

Poniższa ilustracja zawiera podsumowanie wygenerowanych obiektów i elementów członkowskich modelu danych.

Hierarchia obiektów wygenerowany

Aplikacja

Obiekt Application zapewnia najwyższy poziom dostępu do obiektów w aplikacji.Aby uzyskać dostęp do obiektu Application, otwórz dowolny plik kodu użytkownika w edytorze kodu, a następnie wpisz Application.Rodzaje metod i właściwości pojawiające się w IntelliSense po wpisaniu Application, a następnie "." zmienią się w oparciu o plik kodu, w którym jest pisany.W większości przypadków można użyć właściwości obiektu Application, aby pobrać obiekt reprezentujący bieżącego użytkownika.

Obszar roboczy danych

Obiekt DataWorkspace jest obiektem najwyższego poziomu dla dostępu do danych.Obiekt DataWorkspace zawiera właściwości dla każdego źródła danych projektu.Na przykład, jeśli istnieje źródło danych o nazwie NorthwindData, LightSwitch generuje właściwość o nazwie NorthwinddData.Podczas wpisywania DataWorkspace w Edytorze kodu właściwość NorthwindData staje się dostępna na liście rozwijanej.

Na następującej ilustracji pokazano niektóre wygenerowane elementy członkowskie, które mogą być wyświetlane na liście rozwijanej.

Właściwości źródła danych obiektu DataWorkspace

Źródło danych

LightSwitch generuje obiekt dla każdego źródła danych w projekcie.Ten obiekt zawiera elementy członkowskie, których można użyć w celu dostępu do danych.Elementy członkowskie obiektu źródła danych zawierają właściwości zestawu jednostek i metody zapytania.

Na następującej ilustracji pokazano niektóre wygenerowane elementy członkowskie, które mogą być wyświetlane na liście rozwijanej.

Członkowie obiektu źródła danych

Gg445195.collapse_all(pl-pl,VS.110).gifWłaściwości zestawu jednostek

Właściwość zestawu jednostek zwraca kolekcję obiektów.LightSwitch generuje właściwość zestawu jednostek dla każdego obiektu w źródle danych.Na przykład, jeśli źródło danych zawiera jednostkę o nazwie Customer, LightSwitch generuje właściwość o nazwie Customers.Można użyć właściwości Customers w celu uzyskania obiektu EntitySet, który reprezentuje kolekcję jednostek Customer.

Obiekt EntitySet zawiera również elementy członkowskie, które pozwalają sprawdzić, czy bieżący użytkownik ma uprawnienia do odczytu, aktualizacji lub usunięcia jednostki z kolekcji.Aby uzyskać więcej informacji, zobacz Wykonywanie zadań związanych z danych przy użyciu kodu.

[!UWAGA]

EntitySet jest jednym z kilku typów obiektów kolekcji jednostek.W celu optymalizacji wydajności kodu, należy wybrać właściwy typ obiektu kolekcji jednostek dla procesów pisanej logiki biznesowej.Aby uzyskać więcej informacji, zobacz Obiekty kolekcji jednostek i wydajność.

Gg445195.collapse_all(pl-pl,VS.110).gifMetody zapytań

Metoda zapytania pobiera wyniki zapytania.LightSwitch generuje metodę dla każdego zapytania, które jest zdefiniowane w źródle danych.Nazwa metody odpowiada nazwie zapytania.Zapytanie może zwracać jeden obiekt lub kolekcję jednostek typu IDataServiceQueryable.

[!UWAGA]

IDataServiceQueryable<T> jest jednym z kilku typów obiektów kolekcji jednostek.W celu optymalizacji wydajności kodu, należy wybrać właściwy typ obiektu kolekcji jednostek dla procesów pisanej logiki biznesowej.Aby uzyskać więcej informacji, zobacz Obiekty kolekcji jednostek i wydajność.

Domyślnie LightSwitch generuje następujące metody zapytania dla każdej jednostki w źródle danych.

  1. <Nazwa jednostki>_Single.

  2. <Nazwa jednostki>_SingleOrDefault.

Obie te metody akceptują segment klucza podstawowego i zwracają jeden obiekt jednostki.Jeśli jednostki nie są zwracane, metoda <Nazwa jednostki>_Single zgłasza wyjątek a metoda <Nazwa jednostki>_SingleOrDefault zwraca wartość Null (Nothing w języku Visual Basic).

Jednostki

LightSwitch generuje EntityObject dla każdej jednostki w kolekcji jednostek.Na przykład, jeśli kod pobrał kolekcję zleceń, kolekcja zawiera EntityObject reprezentujący każde zlecenie.EntityObject zawiera elementy członkowskie, których można użyć, aby usunąć jednostkę, odczytać lub zaktualizować wartość właściwości jednostki lub pobrać jednostki powiązane.Można uzyskać EntityObject z obiektu kolekcji jednostek takich jak EntitySet lub wywołując metodę zapytania, która zwraca jednostkę.Aby uzyskać więcej informacji, zobacz Wykonywanie zadań związanych z danych przy użyciu kodu.

Na poniższej ilustracji przedstawiono elementy członkowskie obiektu Order o nazwie myOrder.Jednostka Order zawiera właściwości jednostki, takie jak OrderDate, OrderID, i Freight.Jednostka Order ma również elementy członkowskie, które można użyć, aby uzyskać powiązane kolekcje Order_Details i Customer, które złożyły zamówienie.

Właściwości obiektu encji

W tym przykładzie właściwość Customer zwraca jednostkę Customer.Jednostka Customer jest po jednej stronie relacji Customer-Order.

Właściwość Order_Details zwraca kolekcję jednostek Order_Details.Jednostka Order_Details jest po wielu stronach relacji Order-Order_Details.Obiekt kolekcji Order_Details jest typu EntityCollection.

Ilustracja ta przedstawia również właściwość o nazwie Order_DetailsQuery.Właściwości kończące się wyrazem Query zwracają obiekt IDataServiceQueryable.

[!UWAGA]

EntityCollection i IDataServiceQueryable są typami obiektów kolekcji jednostek.W celu optymalizacji wydajności kodu, należy wybrać właściwy typ obiektu kolekcji jednostek dla procesów pisanej logiki biznesowej.Aby uzyskać więcej informacji, zobacz Obiekty kolekcji jednostek i wydajność.

Obiekty kolekcji jednostek i wydajność

Podczas korzystania z obiektu kolekcji jednostek w wyrażeniu LINQ, LightSwitch wykonuje operację, która pobiera jednostki z poziomu serwera.Typ obiektu, którego używasz, określa, czy LightSwitch pobiera wszystkie jednostki w kolekcji czy tylko ich podzbiór.W celu zapewnienia, że kod działa zgodnie z oczekiwaniami, należy wybrać najbardziej odpowiedni typ obiektu kolekcji dla procesów logiki biznesowej, która jest pisana.Istnieją dwa typy obiektu kolekcji jednostek: obiekty nakazujące LightSwitch zdalne szacowanie wyrażenia LINQ i obiekty nakazujące LightSwitch lokalne szacowanie wyrażenia LINQ.

Gg445195.collapse_all(pl-pl,VS.110).gifOperacje LINQ: Wykonanie zdalne vs. wykonanie lokalne

Jeśli używasz obiektów EntitySet lub IDataServiceQueryable w wyrażeniu LINQ, LightSwitch przekazuje całe wyrażenie LINQ do usługi danych poziomu serwera.Następnie wyniki wyrażenia są przekazywane do kodu wywołującego.Wykonanie zapytania tego typu wykonuje się dobrze, ponieważ tylko jednostki, które spełniają zapytania są zwracane do kodu wywołującego.Jednakże tylko podzbiór operatorów zapytania jest obsługiwany przez usługę danych.Jeżeli wyrażenie wymaga innych operatorów LINQ, można rozważyć inne typy kolekcji obiektów.

Na poniższej ilustracji zobrazowano wyrażenie LINQ wykorzystujące obiekt IDataServiceQueryable.W tym przykładzie przedstawiono operację LINQ przekazującą całe wyrażenie do usługi danych i zwracającą tylko jednostki Order, które spełniają warunki tego zapytania.

Zdalne wykonanie w wyrażeniu kwerendy

Jeśli używasz obiektów EntityCollection lub IEnumerable w wyrażeniu LINQ, LightSwitch nie przekazuje wyrażenia do usługi danych.Zamiast tego LightSwitch pobiera wszystkie jednostki danego typu.Następnie wyrażenie jest lokalnie stosowane do całej kolekcji.Jeśli zbiór jednostek jest duży, wykonanie zapytania tego typu może negatywnie wpłynąć na wydajność.Jednakże kod może użyć pełnego zestawu operatorów LINQ.Ponadto takie podejście może mieć sens, gdy należy przekazać pełną kolekcję jednostek do innych metod w kodzie.

Na poniższej ilustracji zobrazowano wyrażenie LINQ wykorzystujące obiekt EntityCollection.W tym przykładzie przedstawiono operację LINQ pobierającą wszystkie jednostki Order dla określonego odbiorcy.Następnie warunki zapytania są stosowane lokalnie na całej kolekcji.

Wykonanie lokalne wyrażenia kwerendy

Gg445195.collapse_all(pl-pl,VS.110).gifPrzykłady: Pobieranie obiektów kolekcji jednostek w kodzie

Poniżej pokazano, jak można uzyskać kolekcje jednostek Order w przykładowej bazie danych Northwind.

Aby uzyskać ten obiekt kolekcji jednostek

Użyj tego kodu

Wykonanie zdalne lub lokalne

EntitySet

DataWorkspace.Northwind.Orders

lub

myOrder.Details.EntitySet()

Zdalne

IDataServiceQueryable

myCustomer.OrdersQuery

lub

DataWorkspace.Northwind.Orders.GetQuery()

Zdalne

EntityCollection

myCustomer.Orders

Lokalne

IEnumerable

myCustomer.OrdersQuery.Execute()

lub

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

Zdalne

Zobacz też

Koncepcje

Wykonywanie zadań związanych z danych przy użyciu kodu

Pisanie kodu w LightSwitch

Inne zasoby

Danych: Informacje za aplikacji