Nouveautés de API Web ASP.NET OData 5.3
par Microsoft
Cette rubrique décrit les nouveautés de API Web ASP.NET OData 5.3.
- Télécharger
- Documentation
- Bibliothèques OData Core
- Nouvelles fonctionnalités
- Problèmes connus et modifications cassants
- Résolution des bogues
- API Web ASP.NET OData 5.3.1
Télécharger
Les fonctionnalités d’exécution sont publiées sous forme de packages NuGet dans la galerie NuGet. Vous pouvez installer ou mettre à jour les packages NuGet publiés à l’aide de la console du Gestionnaire de package NuGet :
Install-Package Microsoft.AspNet.OData -Version 5.3.0
Install-Package Microsoft.AspNet.WebApi.OData -Version 5.3.0
Documentation
Vous trouverez des tutoriels et d’autres documentations sur API Web ASP.NET OData sur le site web ASP.NET.
Bibliothèques OData Core
Pour OData v4, l’API web utilise désormais ODataLib version 6.5.0
Nouvelles fonctionnalités dans API Web ASP.NET OData 5.3
Prise en charge des $levels dans $expand
Vous pouvez utiliser l’option de requête $levels dans $expand requêtes. Par exemple :
http://example.com/Employees?$expand=Manager($levels=2)
Cette requête équivaut à :
http://example.com/Employees?$expand=Manager($expand=Manager))
Prise en charge des types d’entités ouverts
Un type ouvert est un type structuré qui contient des propriétés dynamiques, en plus de toutes les propriétés déclarées dans la définition de type. Les types ouverts vous permettent d’ajouter de la flexibilité à vos modèles de données. Pour plus d’informations, consultez xxxx.
Prise en charge des propriétés de collection dynamiques dans les types ouverts
Auparavant, une propriété dynamique devait être une valeur unique. Dans la version 5.3, les propriétés dynamiques peuvent avoir des valeurs de collection. Par exemple, dans la charge utile JSON suivante, la Emails
propriété est une propriété dynamique et est de collection de type chaîne :
{
"Id": 1,
"Name": "Ben",
"Emails@odata.type": "#Collection(Edm.String)",
"Emails": [
"a@a.com",
"b@b.com"
]
}
Prise en charge de l’héritage pour les types complexes
Désormais, les types complexes peuvent hériter d’un type de base. Par exemple, un service OData peut définir les types complexes suivants :
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>();
}
}
Voici l’EDM pour cet exemple :
<?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>
Pour plus d’informations, consultez Exemple d’héritage de type complexe OData.
Problèmes connus et modifications cassants
Cette section décrit les problèmes connus et les changements cassants dans le API Web ASP.NET OData 5.3.
OData v4
Options de requête
Problème : L’utilisation de $expand imbriquées avec $levels=max entraîne une profondeur d’expansion incorrecte.
Par exemple, en fonction de la demande suivante :
~/Entities(6)?$expand=P($levels=2;$expand=D($levels=max))
Si MaxExpansionDepth
la valeur est 5, cette requête entraînerait une profondeur d’expansion de 6.
Correctifs de bogues et Mises à jour de fonctionnalités mineures
Cette version inclut également plusieurs correctifs de bogues et mises à jour mineures des fonctionnalités.
API Web ASP.NET OData 5.3.1
Dans cette version, nous avons apporté un correctif de bogue à certaines des énumérations AllowedFunctions. Cette version n’a pas d’autres correctifs de bogues ni de nouvelles fonctionnalités.