Freigeben über


Arbeiten mit datenbezogenen Objekten im Code

Mit LightSwitch werden Objekte und Member generiert, die die Daten beschreiben.Die Namen dieser Objekte und Member stimmen mit den Namen von Elementen in der Projektmappe überein.Wenn Sie z. B. eine Tabelle mit dem Namen Customer hinzufügen, generiert LightSwitch ein Objekt mit dem Namen Customer.In diesem Thema wird jeder Objekttyp beschrieben, der von LightSwitch generiert wird.Informationen zum Anzeigen von Codebeispielen, in denen diese Objekte und Member verwendet werden, um allgemeine datenbezogene Aufgaben auszuführen, finden Sie unter Ausführen datenbezogener Aufgaben mithilfe von Code.

Hierarchie generierter Objekte und Member

In der folgenden Abbildung werden die generierten Objekte und Member des Datenmodells zusammengefasst.

Hierarchie generierter Objekte

Anwendung

Das Application-Objekt bietet Zugriff auf die oberste Objektebene in der Anwendung.Um auf das Application-Objekt zuzugreifen, öffnen Sie eine beliebige Benutzercodedatei im Code-Editor und geben dann Application ein.Die Typen von Methoden und Eigenschaften, die in IntelliSense angezeigt werden, wenn Sie Application und anschließend "." eingeben, ändern sich basierend auf der Codedatei, in der Sie Code schreiben.In den meisten Fällen können Sie eine Eigenschaft des Application-Objekts verwenden, um ein Objekt abzurufen, das den aktuellen Benutzer darstellt.

Datenarbeitsbereich

Das DataWorkspace-Objekt ist das Objekt der obersten Ebene für den gesamten Datenzugriff.Das DataWorkspace-Objekt enthält eine Eigenschaft für jede Datenquelle im Projekt.Wenn Sie z. B. eine Datenquelle mit dem Namen "NorthwindData" verwenden, wird mit LightSwitch eine Eigenschaft mit dem Namen NorthwinddData generiert.Falls Sie DataWorkspace im Code-Editor eingeben, wird die NorthwindData-Eigenschaft in einer Dropdownliste zur Verfügung gestellt.

Die folgende Abbildung zeigt einige generierte Member, die ggf. in einer Dropdownliste angezeigt werden können.

Datenquelleneigenschaften des DataWorkspace-Objekts

Datenquelle

LightSwitch generiert im Projekt ein Objekt für jede Datenquelle.Dieses Objekt enthält Member, mit denen Sie auf Daten zugreifen können.Die Member eines Datenquellenobjekts enthalten Entitätenmengeneigenschaften und Abfragemethoden.

Die folgende Abbildung zeigt einige generierte Member, die ggf. in einer Dropdownliste angezeigt werden können.

Member des Datenquellenobjekts

Gg445195.collapse_all(de-de,VS.110).gifEntitätenmengeneigenschaften

Eine Entitätenmengeneigenschaft gibt eine Auflistung von Entitäten zurück.LightSwitch generiert eine Entitätenmengeneigenschaft für jede Entität in der Datenquelle.Wenn die Datenquelle z. B. eine Entität mit dem Namen Customer enthält, generiert LightSwitch eine Eigenschaft mit dem Namen Customers.Sie können die Customers-Eigenschaft verwenden, um ein EntitySet-Objekt abzurufen, das eine Auflistung von Customer-Entitäten darstellt.

Das EntitySet-Objekt enthält auch Member, mit denen Sie überprüfen können, ob der aktuelle Benutzer über die Berechtigung zum Lesen, Aktualisieren oder Löschen von Entitäten in der Auflistung verfügt.Weitere Informationen finden Sie unter Ausführen datenbezogener Aufgaben mithilfe von Code.

HinweisHinweis

EntitySet ist einer mehrerer Typen von Entitätsauflistungsobjekten.Stellen Sie zur Optimierung der Leistung des Codes sicher, dass für die Entitätsauflistung ein Objekttyp verwendet wird, der für die von Ihnen geschriebene Geschäftslogik geeignet ist.Weitere Informationen finden Sie unter Entitätsauflistungsobjekte und -leistung.

Gg445195.collapse_all(de-de,VS.110).gifAbfragemethoden

Mit einer Abfragemethode werden die Ergebnisse einer Abfrage abgerufen.LightSwitch generiert eine Methode für jede Abfrage, die in der Datenquelle definiert ist.Der Name der Methode stimmt mit dem Namen der Abfrage überein.Eine Abfrage kann eine einzelne Entität oder eine Auflistung mit Entitäten vom Typ IDataServiceQueryable zurückgeben.

HinweisHinweis

IDataServiceQueryable<T> ist einer mehrerer Typen von Entitätsauflistungsobjekten.Stellen Sie zur Optimierung der Leistung des Codes sicher, dass für die Entitätsauflistung ein Objekttyp verwendet wird, der für die von Ihnen geschriebene Geschäftslogik geeignet ist.Weitere Informationen finden Sie unter Entitätsauflistungsobjekte und -leistung.

Standardmäßig generiert LightSwitch für jede Entität in der Datenquelle die folgenden Abfragemethoden.

  1. <Entitätsname>_Single

  2. <Entitätsname>_SingleOrDefault

Beide Methoden akzeptieren ein Primärschlüsselsegment und geben ein einzelnes Entitätsobjekt zurück.Wenn keine Entitäten zurückgegeben werden, löst die <Entitätsname>_Single-Methode eine Ausnahme aus, wohingegen die <Entitätsname>_SingleOrDefault-Methode einen Null-Wert (Nothing in Visual Basic) zurückgibt.

Entitäten

LightSwitch generiert ein EntityObject für jede Entität in einer Entitätsauflistung.Wenn im Code z. B. eine Auflistung mit Bestellungen abgerufen wird, enthält die Auflistung ein EntityObject für jede Bestellung.Ein EntityObject enthält Member, die Sie verwenden können, um eine Entität zu löschen, den Wert von Entitätseigenschaften zu lesen oder zu aktualisieren oder verknüpfte Entitäten abzurufen.Sie können ein EntityObject aus einem Entitätsauflistungsobjekt, z. B. einem EntitySet, abrufen oder eine Abfragemethode aufrufen, die eine Entität zurückgibt.Weitere Informationen finden Sie unter Ausführen datenbezogener Aufgaben mithilfe von Code.

Die folgende Abbildung zeigt die Member einer Order-Entität mit dem Namen myOrder.Die Order-Entität enthält Entitätseigenschaften, z. B. OrderDate, OrderID und Freight.Die Order-Entität verfügt auch über Member, mit denen Sie die verwandte Order_Details-Auflistung und den Customer abrufen können, der die Bestellung aufgegeben hat.

Eigenschaften eines Entitätsobjekts

In diesem Beispiel gibt die Customer-Eigenschaft eine Customer-Entität zurück.Eine Customer-Entität befindet sich an einem Ende der Customer-Order-Beziehung.

Die Order_Details-Eigenschaft gibt eine Auflistung mit Order_Details-Entitäten zurück.Die Order_Details-Entität befindet sich auf der n-Seite der Order-Order_Details-Beziehung.Das Order_Details-Auflistungsobjekt ist vom Typ EntityCollection.

Diese Abbildung zeigt auch eine Eigenschaft mit dem Namen Order_DetailsQuery.Eigenschaften, die auf das Wort Query enden, geben ein IDataServiceQueryable-Objekt zurück.

HinweisHinweis

Bei EntityCollection und IDataServiceQueryable handelt es sich um Typen von Entitätsauflistungsobjekten.Stellen Sie zur Optimierung der Leistung des Codes sicher, dass für die Entitätsauflistung ein Objekttyp verwendet wird, der für die von Ihnen geschriebene Geschäftslogik geeignet ist.Weitere Informationen finden Sie unter Entitätsauflistungsobjekte und -leistung.

Entitätsauflistungsobjekte und -leistung

Wenn Sie in einem LINQ-Ausdruck ein Entitätsauflistungsobjekt verwenden, führt LightSwitch einen Vorgang aus, bei dem Entitäten von der Serverebene abgerufen werden.Anhand des Typs des verwendeten Objekts wird bestimmt, ob LightSwitch alle Entitäten in einer Auflistung oder nur eine Teilmenge abruft.Um sicherzustellen, dass sich der Code wie erwartet verhält, wählen Sie den am besten geeigneten Auflistungsobjekttyp für die Geschäftslogik aus, die Sie schreiben.Es gibt zwei Typen von Entitätsauflistungsobjekten: Objekte, die bewirken, dass LightSwitch einen LINQ-Ausdruck remote auswertet, und Objekte, die bewirken, dass LightSwitch einen LINQ-Ausdruck lokal auswertet.

Gg445195.collapse_all(de-de,VS.110).gifLINQ-Vorgänge: Remoteausführung oder lokale Ausführung

Wenn Sie in einem LINQ-Ausdruck ein EntitySet-Objekt oder ein IDataServiceQueryable-Objekt verwenden, übergibt LightSwitch den gesamten LINQ-Ausdruck an den Datendienst der Serverebene.Dann werden die Ergebnisse des Ausdrucks zurück an den aufrufenden Code übergeben.Dieser Typ der Abfrageausführung bietet eine gute Leistung, da nur Entitäten an den aufrufenden Code zurückgegeben werden, die die Abfragebedingungen erfüllen.Vom Datendienst wird jedoch nur eine Teilmenge der Abfrageoperatoren unterstützt.Falls der Ausdruck andere LINQ-Operatoren erfordert, sollten Sie erwägen, andere Typen von Auflistungsobjekten zu verwenden.

Die folgende Abbildung zeigt einen LINQ-Ausdruck, der ein IDataServiceQueryable-Objekt verwendet.In diesem Beispiel wird veranschaulicht, wie der LINQ-Vorgang den gesamten Ausdruck an den Datendienst übergibt und nur Order-Entitäten zurückgegeben werden, die die Bedingungen der Abfrage erfüllen.

Remoteausführung eines Abfrageausdrucks

Wenn Sie in einem LINQ-Ausdruck ein EntityCollection-Objekt oder ein IEnumerable-Objekt verwenden, übergibt LightSwitch den Ausdruck nicht an den Datendienst.Stattdessen ruft LightSwitch alle Entitäten des angegebenen Typs ab.Anschließend wird der Ausdruck lokal auf die ganze Auflistung angewendet.Wenn eine Entitätsauflistung sehr groß ist, kann dieser Typ der Abfrageausführung die Leistung negativ beeinträchtigen.Im Code kann jedoch der vollständige Satz von LINQ-Operatoren verwendet werden.Außerdem kann dieser Ansatz sinnvoll sein, wenn Sie vollständige Auflistungsentitäten an andere Methoden im Code übergeben möchten.

Die folgende Abbildung zeigt einen LINQ-Ausdruck, der ein EntityCollection-Objekt verwendet.In diesem Beispiel wird der LINQ-Vorgang veranschaulicht, bei dem alle Order-Entitäten für einen bestimmten Kunden abgerufen werden.Dann werden die Bedingungen für die Abfrage lokal auf die ganze Auflistung angewendet.

Lokale Ausführung eines Abfrageausdrucks

Gg445195.collapse_all(de-de,VS.110).gifBeispiele: Abrufen von Entitätsauflistungsobjekten in Code

Im Folgenden wird gezeigt, wie Sie Auflistungen von Order-Entitäten in der Beispieldatenbank Northwind abrufen können.

So rufen Sie dieses Entitätsauflistungsobjekt ab

Verwenden dieses Codes

Remote- oder lokale Ausführung

EntitySet

DataWorkspace.Northwind.Orders

oder

myOrder.Details.EntitySet()

Remote

IDataServiceQueryable

myCustomer.OrdersQuery

oder

DataWorkspace.Northwind.Orders.GetQuery()

Remote

EntityCollection

myCustomer.Orders

Lokal

IEnumerable

myCustomer.OrdersQuery.Execute()

oder

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

Remote

Siehe auch

Konzepte

Ausführen datenbezogener Aufgaben mithilfe von Code

Schreiben von Code in LightSwitch

Weitere Ressourcen

Daten: Die der Anwendung zugrunde liegenden Informationen