Práce s objekty související s daty v kódu
Aplikace LightSwitch generuje objekty a členy, které popisují data.Názvy těchto objektů a členů odpovídají názvům položek v řešení.Například, při přidání tabulky s názvem Customer, aplikace LightSwitch vytvoří objekt nazvaný Customer.Toto téma popisuje všechny typy objektů, které lze vygenerovat pomocí aplikace LightSwitch.Příklady kódu, které používají tyto objekty a členy k provádění běžných úkolů týkajících se dat, naleznete v tématu Provádění úkolů souvisejících s daty pomocí kódu.
Hierarchie vygenerovaných objektů a členů
Následující obrázek obsahuje souhrn vygenerovaných objektů a členů z datového modelu.
Aplikace
Objekt Application poskytuje nejvyšší úroveň přístupu k objektům v aplikaci.Chcete-li přistoupit k objektu Application, otevřete libovolný soubor s uživatelským kódem v editoru kódu a poté zadejte Application.Typy metod a vlastností, které se zobrazí v nabídce technologie IntelliSense po zadání Application a poté ".", se budou měnit v závislosti na souboru, ve kterém píšete kód.Ve většině případů lze použít vlastnost objektu Application k získání objektu, který reprezentuje aktuálního uživatele.
Pracovní prostor dat
Objekt DataWorkspace je objekt nejvyšší úrovně pro veškerý datový přístup.Objekt DataWorkspace obsahuje vlastnost pro každý zdroj dat v projektu.Například, máte-li zdroj dat s názvem NorthwindData, aplikace LightSwitch vygeneruje vlastnost s názvem NorthwinddData.Po zadání DataWorkspace v editoru kódu bude v rozevíracím seznamu k dispozici vlastnost NorthwindData.
Následující obrázek znázorňuje některé generované členy, kteří se mohou zobrazit v rozevíracím seznamu.
Zdroj dat
Aplikace LightSwitch vytvoří objekt pro každý zdroj dat v projektu.Tento objekt obsahuje členy, které lze použít pro přístup k datům.Členové objektu zdroje dat zahrnují vlastnosti sady entit a metody dotazu.
Následující obrázek znázorňuje některé generované členy, kteří se mohou zobrazit v rozevíracím seznamu.
Vlastnosti sady entit
Vlastnost sady entity vrátí kolekci entit.Aplikace LightSwitch vytvoří vlastnost sady entit pro každou entitu ve zdroji dat.Pokud například váš zdroj dat obsahuje entitu s názvem NorthwindData Customer, aplikace LightSwitch vygeneruje vlastnost s názvem Customers.Pomocí vlastnosti Customers můžete získat objekt EntitySet, který představuje kolekci entit Customer.
Objekt EntitySet také obsahuje členy, kteří umožňují kontrolovat, zda má aktuální uživatel oprávnění ke čtení, aktualizaci nebo odstraňování entit v kolekci.Další informace naleznete v tématu Provádění úkolů souvisejících s daty pomocí kódu.
[!POZNÁMKA]
EntitySet je jedním z několika typů objektů kolekce entit.Chcete-li optimalizovat výkon kódu, přesvědčte se, zda používáte správný typ objektu kolekce entit pro typ obchodní logiky, kterou píšete.Další informace naleznete v tématu Objekty kolekcí entit a výkon.
Metody dotazu
Metoda dotazu získá výsledky dotazu.Aplikace LightSwitch generuje metodu pro každý dotaz, který je definován ve zdroji dat.Název metody odpovídá názvu dotazu.Dotaz může vracet jedinou entitu nebo kolekci entit typu IDataServiceQueryable.
[!POZNÁMKA]
IDataServiceQueryable<T> je jedním z několika typů objektů kolekce entit.Chcete-li optimalizovat výkon kódu, přesvědčte se, zda používáte správný typ objektu kolekce entit pro typ obchodní logiky, kterou píšete.Další informace naleznete v tématu Objekty kolekcí entit a výkon.
Ve výchozím nastavení aplikace LightSwitch generuje následující metody dotazu pro každou entitu ve zdroji dat.
<Název entity>_Single.
<Název entity>_SingleOrDefault.
Obě tyto metody přijmou segment primárního klíče a vrátí objekt s jedinou entitou.Pokud nejsou vráceny žádné entity, vyvolá metoda <Název entity>_Single výjimku, zatímco metoda <Název entity>_SingleOrDefault vrátí hodnotu Null (Nothing v jazyce Visual Basic).
Entity
Aplikace LightSwitch generuje objekt EntityObject pro každou entitu v kolekci entit.Pokud by například váš kód načetl kolekci objednávek, kolekce by obsahovala objekt EntityObject představují jednotlivé objednávky.Objekt EntityObject obsahuje členy, pomocí kterých lze odstranit entitu, číst nebo aktualizovat hodnotu vlastností entity nebo získat související entity.Objekt EntityObject lze získat z objektu kolekce entity jako objekt EntitySet nebo pomocí volání metody dotazu, která vrátí entitu.Další informace naleznete v tématu Provádění úkolů souvisejících s daty pomocí kódu.
Následující obrázek znázorňuje členy entity Order s názvem myOrder.Entita Order obsahuje vlastnosti entity, například OrderDate, OrderID nebo Freight.Entita Order má také členy, které můžete použít k získání související kolekce Order_Details a objektu Customer, který zadal objednávku.
V tomto příkladu vrátí vlastnost Customer entitu Customer.Entita Customer je v relaci Customer-Order na straně 1.
Vlastnost Order_Details vrací kolekci entit Order_Details.Entita Order_Details je v relaci Order-Order_Details na straně N.Objekt kolekce Order_Details je typu EntityCollection.
Tento obrázek také ukazuje vlastnost s názvem Order_DetailsQuery.Vlastnosti, které končí slovem Query vrátí objekt IDataServiceQueryable.
[!POZNÁMKA]
Kolekce EntityCollection a rozhraní IDataServiceQueryable jsou typy objektů kolekce entit.Chcete-li optimalizovat výkon kódu, přesvědčte se, zda používáte správný typ objektu kolekce entit pro typ obchodní logiky, kterou píšete.Další informace naleznete v tématu Objekty kolekcí entit a výkon.
Objekty kolekcí entit a výkon
Použijete-li ve výrazu LINQ objekt kolekce entit, aplikace LightSwitch provede operaci, která načte entity ze serverové vrstvy.Typ objektu, který použijete, určuje, zda aplikace LightSwitch načte všechny entity v kolekci, nebo pouze jejich podmnožinu.Chcete-li zajistit, aby se kód choval podle očekávání, lze zvolit nejvhodnější typ objektu kolekce pro obchodní logiku, kterou píšete.Existují dva typy objektů kolekce entit. Objekty, které způsobí, že aplikace LightSwitch vyhodnotí výraz LINQ vzdáleně a objekty, které způsobí, že aplikace LightSwitch vyhodnotí výraz LINQ místně.
Operace LINQ: Vzdálené VS. místní spuštění
Používáte-li ve výrazu LINQ objekt EntitySet nebo IDataServiceQueryable, LightSwitch předá celý výraz LINQ datové službě serverové vrstvy.Výsledky výrazu jsou poté předány zpět do volajícího kódu.Pomocí tohoto typu spuštění dotazu lze dosáhnout dobrých výsledků, protože volajícímu kódu jsou vráceny pouze entity, které vyhovují dotazu.Datová služba však podporuje pouze podmnožinu operátorů dotazu.Pokud výraz vyžaduje další operátory LINQ, zvažte použití jiného typu kolekce.
Následující obrázek znázorňuje výraz LINQ, který používá objekt IDataServiceQueryable.Tento příklad ukazuje operaci LINQ předávající datové službě celý výraz a vracející pouze entity Order, které vyhovují podmínkám dotazu.
Používáte-li ve výrazu LINQ objekt EntityCollection nebo rozhraní IEnumerable nepředá aplikace LightSwitch výraz datové službě.Místo toho aplikace LightSwitch načte všechny entity daného typu.Výraz poté platí místně pro celou kolekci.Pokud je kolekce entit rozsáhlá, může použití tohoto typu spouštění dotazu negativně ovlivnit výkon.V kódu však lze používat úplnou sadu operátorů LINQ.Kromě toho může mít tento přístup smysl, když budete chtít předat celé kolekce entit jiným metodám v kódu.
Následující obrázek znázorňuje výraz LINQ, který používá objekt EntityCollection.Tento příklad ukazuje operaci LINQ načítající všechny entity Order konkrétního zákazníka.Podmínky dotazu poté platí pro celou kolekci místně.
Příklady: Získání objektů kolekce entit v kódu
Následuje ukázka způsobu získání kolekcí entit Order v ukázkové databázi Northwind.
Chcete-li získat tento objekt kolekce entit |
Lze použít tento kód |
Vzdálené nebo místní spuštění |
---|---|---|
EntitySet |
DataWorkspace.Northwind.Orders nebo myOrder.Details.EntitySet() |
Vzdálené |
IDataServiceQueryable |
myCustomer.OrdersQuery nebo DataWorkspace.Northwind.Orders.GetQuery() |
Vzdálené |
EntityCollection |
myCustomer.Orders |
Místní |
IEnumerable |
myCustomer.OrdersQuery.Execute() nebo DataWorkspace.Northwind.Orders.GetQuery().Execute() |
Vzdálené |
Viz také
Koncepty
Provádění úkolů souvisejících s daty pomocí kódu