Neuerungen in ASP.NET-Web-API OData 5.3
von Microsoft
In diesem Thema werden die Neuerungen für ASP.NET-Web-API OData 5.3 beschrieben.
- Download
- Dokumentation
- OData Core-Bibliotheken
- Neue Funktionen
- Bekannte Probleme und wichtige Änderungen
- Fehlerbehebungen
- ASP.NET-Web-API OData 5.3.1
Herunterladen
Die Laufzeitfeatures werden als NuGet-Pakete im NuGet-Katalog veröffentlicht. Sie können die veröffentlichten NuGet-Pakete installieren oder aktualisieren, indem Sie die NuGet-Paket-Manager-Konsole verwenden:
Install-Package Microsoft.AspNet.OData -Version 5.3.0
Install-Package Microsoft.AspNet.WebApi.OData -Version 5.3.0
Dokumentation
Tutorials und andere Dokumentationen zu ASP.NET-Web-API OData finden Sie auf der ASP.NET-Website.
OData Core-Bibliotheken
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 $levels-Abfrageoption in $expand Abfragen verwenden. Zum Beispiel:
http://example.com/Employees?$expand=Manager($levels=2)
Diese Abfrage entspricht folgendem:
http://example.com/Employees?$expand=Manager($expand=Manager))
Unterstützung für offene Entitätstypen
Ein geöffneter Typ ist ein strukturierter Typ, der dynamische Eigenschaften enthält, zusätzlich zu allen Eigenschaften, die in der Typdefinition deklariert sind. Mit offenen Typen können Sie Ihre Datenmodelle flexibler machen. Weitere Informationen finden Sie unter xxxx.
Unterstützung für dynamische Sammlungseigenschaften in geöffneten Typen
Zuvor musste eine dynamische Eigenschaft ein einzelner Wert sein. In 5.3 können dynamische Eigenschaften Sammlungswerte aufweisen. In der folgenden JSON-Nutzlast ist die Emails
Eigenschaft beispielsweise eine dynamische Eigenschaft und eine Auflistung 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. Ein OData-Dienst könnte beispielsweise 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>();
}
}
Hier sehen Sie den 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 Beispiel für die Vererbung komplexer OData-Typen.
Bekannte Probleme und wichtige Änderungen
In diesem Abschnitt werden bekannte Probleme und breaking changes 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 für die folgende Anforderung:
~/Entities(6)?$expand=P($levels=2;$expand=D($levels=max))
Wenn MaxExpansionDepth
5 ist, führt diese Abfrage zu einer Erweiterungstiefe von 6.
Fehlerbehebungen und Updates kleinerEr Feature-Updates
Dieses Release enthält auch mehrere Fehlerbehebungen und kleinere Featureupdates.
ASP.NET-Web-API OData 5.3.1
In dieser Version haben wir eine Fehlerbehebung für einige der AllowedFunctions-Enumerationen vorgenommen. Dieses Release enthält keine weiteren Fehlerbehebungen oder neuen Features.