Freigeben über


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>

Siehe auch

Konzepte

EntityDataSource-Designer

Weitere Ressourcen

Datenauswahl mit EntityDataSource

Objektabfragen (Entity Framework)