Freigeben über


Neuigkeiten in ASP.NET Web-API OData 5.3

von Microsoft

In diesem Thema wird beschrieben, was für ASP.NET Web-API OData 5.3 neu ist.

Herunterladen

Die Laufzeitfeatures werden als NuGet-Pakete in der NuGet-Galerie veröffentlicht. Sie können die veröffentlichten NuGet-Pakete mithilfe der NuGet-Paket-Manager-Konsole installieren oder aktualisieren:

Install-Package Microsoft.AspNet.OData -Version 5.3.0 
Install-Package Microsoft.AspNet.WebApi.OData -Version 5.3.0

Dokumentation

Auf der ASP.NET-Website finden Sie Lernprogramme und weitere Dokumentationen zu ASP.NET Web-API-OData.

OData-Kernbibliotheken

Für OData v4 verwendet die Web-API jetzt ODataLib, Version 6.5.0

Neue Features in ASP.NET Web-API OData 5.3

Unterstützung für $levels in $expand

Sie können die Abfrageoption $levels in $expand-Abfragen verwenden. Beispiel:

http://example.com/Employees?$expand=Manager($levels=2)

Diese Abfrage entspricht:

http://example.com/Employees?$expand=Manager($expand=Manager))

Unterstützung für offene Entitätstypen

Ein offener Typ ist ein strukturierter Typ, der zusätzlich zu allen Eigenschaften, die in der Typdefinition deklariert sind, dynamische Eigenschaften enthält. Mit offenen Typen können Sie Ihren Datenmodellen Flexibilität verleihen. Weitere Informationen finden Sie unter xxxx.

Unterstützung für dynamische Sammlungseigenschaften in offenen Typen

Zuvor musste eine dynamische Eigenschaft ein einzelner Wert sein. In 5.3 können dynamische Eigenschaften Sammlungswerte aufweisen. Beispielsweise ist die Emails Eigenschaft in der folgenden JSON-Nutzlast eine dynamische Eigenschaft und eine Sammlung des Zeichenfolgentyps:

{
   "Id": 1,
   "Name": "Ben",
   "Emails@odata.type": "#Collection(Edm.String)",
   "Emails": [
      "a@a.com",
      "b@b.com"
   ]
}

Unterstützung der Vererbung für komplexe Typen

Jetzt können komplexe Typen von einem Basistyp erben. Beispielsweise könnte ein OData-Dienst die folgenden komplexen Typen definieren:

public abstract class Shape
{
    public bool HasBorder { get; set; }
}

public class Point
{
    public int X { get; set; }
    public int Y { get; set; }
}

public class Circle : Shape
{
    public Point Center { get; set; }
    public int Radius { get; set; }

    public override string ToString()
    {
        return "{" + Center.X + "," + Center.Y + "," + Radius + "}";
    }
}

public class Polygon : Shape
{
    public IList<Point> Vertexes { get; set; }
    public Polygon()
    {
        Vertexes = new List<Point>();
    }
}

Dies ist der EDM für dieses Beispiel:

<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
  <edmx:DataServices>
    <Schema Namespace="ODataComplexTypeInheritanceSample" xmlns="http://docs.oasis-open.org/odata/ns/edm">
      <ComplexType Name="Shape" Abstract="true">
        <Property Name="HasBorder" Type="Edm.Boolean" Nullable="false" />
      </ComplexType>
      <ComplexType Name="Polygon" BaseType="ODataComplexTypeInheritanceSample.Shape">
        <Property Name="Vertexes" Type="Collection(ODataComplexTypeInheritanceSample.Point)" />
      </ComplexType>
      <ComplexType Name="Point">
        <Property Name="X" Type="Edm.Int32" Nullable="false" />
        <Property Name="Y" Type="Edm.Int32" Nullable="false" />
      </ComplexType>
      <ComplexType Name="Circle" BaseType="ODataComplexTypeInheritanceSample.Shape">
        <Property Name="Center" Type="ODataComplexTypeInheritanceSample.Point" />
        <Property Name="Radius" Type="Edm.Int32" Nullable="false" />
      </ComplexType>
      <EntityContainer Name="Container">
      </EntityContainer>
    </Schema>
  </edmx:DataServices>
</edmx:Edmx>

Weitere Informationen finden Sie unter OData Complex Type Vererbungsbeispiel.

Bekannte Probleme und wichtige Änderungen

In diesem Abschnitt werden bekannte Probleme und wichtige Änderungen in der ASP.NET Web-API OData 5.3 beschrieben.

OData v4

Abfrageoptionen

Problem: Die Verwendung geschachtelter $expand mit $levels=max führt zu einer falschen Erweiterungstiefe.

Beispiel: Bei der folgenden Anforderung:

~/Entities(6)?$expand=P($levels=2;$expand=D($levels=max))

Wenn MaxExpansionDepth 5 ist, würde diese Abfrage zu einer Erweiterungstiefe von 6 führen.

Fehlerbehebungen und Kleinere Funktionsupdates

Diese Version enthält auch mehrere Fehlerbehebungen und kleinere Funktionsupdates.

ASP.NET Web-API OData 5.3.1

In dieser Version haben wir eine Fehlerbehebung für einige der AllowedFunctions-Enums durchgeführt. Diese Version verfügt nicht über andere Fehlerkorrekturen oder neue Features.