Datenprojektionen (EntityDataSource)
Aktualisiert: November 2007
Sie können bestimmte Eigenschaften des Objekts, das von einem EntityDataSource-Steuerelement zurückgegeben wird, mithilfe der Select-Eigenschaft projizieren. Die Select-Eigenschaft des EntityDataSource-Steuerelements enthält eine Zeichenfolge, die die SELECT-Anweisung einer Entity SQL-Abfrage repräsentiert. Diese Zeichenfolge wird unverändert an ObjectQuery<T> übergeben, die bei Ausführung die Daten an das EntityDataSource-Steuerelement zurückgibt. Die an die Select-Eigenschaft übergebene Zeichenfolge verwendet das gleiche Format wie die Zeichenfolge, die an die Select-Methode von ObjectQuery<T> übergeben wird. Beispiele zur Verwendung der SELECT-Klausel zum Definieren einer Projektion für eine Abfrage finden Sie unter Gewusst wie: Ausführen einer Abfrage, die einen anonymen Typ zurückgibt (Entity Framework).
Hinweis: |
---|
Aktualisierungen werden bei projizierten Daten nicht unterstützt. Wenn Sie mit der Select-Eigenschaft eine Projektion festlegen, werden von der Datenbindung keine Aktualisierungen unterstützt. |
Im folgenden XML-Markup wird mit der Select-Eigenschaft eine Projektion mit sechs Eigenschaften des Product-Typs definiert:
<asp:EntityDataSource ID="ProductDataSource"
ConnectionString="name=AdventureWorksEntities"
DefaultContainerName="AdventureWorksEntities"
EntitySetName="Product" OrderBy="it.ProductID"
Select="it.ProductID, it.Name, it.ListPrice,
it.Size, it.Style, it.Weight">
</asp:EntityDataSource>
Das vorhergehende XML-Beispiel entspricht der folgenden ObjectQuery<T> mit dem Namen products:
ObjectQuery<Product> products = context.Product
.Select(it.ProductID, it.Name, it.ListPrice,
it.Size, it.Style, it.Weight)
.OrderBy("it.ProductID");
Übergeben von Parametern
Wie bei der Select-Methode der ObjectQuery<T>-Klasse können Sie Parameter an die durch die Select-Eigenschaft definierte Projektion übergeben. Sie müssen die SelectParameters-Eigenschaft des EntityDataSource-Steuerelements definieren, um eine ParameterCollection für die SELECT-Anweisung der Abfrage anzugeben. Die SelectParameters-Eigenschaft verweist mittels benannter Argumente auf die Parameter in der Select-Eigenschaft.
Falls Sie die SelectParameters-Eigenschaft nicht definieren, werden keine Parameter ersetzt. Alle Parameternamen in der SELECT-Anweisung, denen das "@"-Symbol voransteht, müssen einen passenden Namen in ParameterCollection aufweisen. NULL-Werte sind für Parameter in ParameterCollection nicht zulässig.
Im folgenden Beispiel wird jedem Product in der Abfrage mithilfe eines Parameters in einer der Eigenschaftsprojektionen ein Rabatt von 90 Prozent zugeteilt.
<asp:EntityDataSource ID="EntityDataSource6"
EnableViewState="False"
EntitySetName="Products"
ConnectionString="name=NorthwindContext"
DefaultContainerName="NorthwindContext"
EntityTypeFilter="Products"
Select="it.ProductID, it.UnitsInStock, it.ProductName,
it.UnitPrice * @Discount as UnitPrice,
it.UnitsOnOrder as UnitsOnOrder, it.Discontinued"
Where="it.ProductID < 10"
>
<SelectParameters>
<asp:Parameter Name="Discount" DefaultValue=".90"
Type="Decimal" />
</SelectParameters>
</asp:EntityDataSource>