Condividi tramite


Novità di API Web ASP.NET OData 5.3

di Microsoft

Questo argomento descrive le novità per API Web ASP.NET OData 5.3.

Scarica

Le funzionalità di runtime vengono rilasciate come pacchetti NuGet nella raccolta NuGet. È possibile installare o aggiornare i pacchetti NuGet rilasciati usando la console di Gestione pacchetti NuGet:

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

Documentazione

È possibile trovare esercitazioni e altre informazioni su API Web ASP.NET OData nel sito Web ASP.NET.

Librerie di base OData

Per OData v4, l'API Web ora usa ODataLib versione 6.5.0

Nuove funzionalità in API Web ASP.NET OData 5.3

Supporto per $levels in $expand

È possibile usare l'opzione query $levels nelle query $expand. Ad esempio:

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

Questa query equivale a:

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

Supporto per i tipi di entità aperti

Un tipo aperto è un tipo strutturato che contiene proprietà dinamiche, oltre a tutte le proprietà dichiarate nella definizione del tipo. I tipi aperti consentono di aggiungere flessibilità ai modelli di dati. Per altre informazioni, vedere xxxx.

Supporto per le proprietà della raccolta dinamica nei tipi aperti

In precedenza, una proprietà dinamica doveva essere un singolo valore. Nella versione 5.3 le proprietà dinamiche possono avere valori di raccolta. Ad esempio, nel payload JSON seguente, la Emails proprietà è una proprietà dinamica ed è di tipo stringa:

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

Supporto per l'ereditarietà per tipi complessi

Ora i tipi complessi possono ereditare da un tipo di base. Ad esempio, un servizio OData può definire i tipi complessi seguenti:

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>();
    }
}

Ecco l'EDM per questo esempio:

<?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>

Per altre informazioni, vedere Esempio di ereditarietà dei tipi complessi OData.

Problemi noti e modifiche di rilievo

Questa sezione descrive i problemi noti e le modifiche che causano interruzioni nel API Web ASP.NET OData 5.3.

OData v4

Opzioni query

Problema: l'uso di $expand annidati con $levels=max comporta una profondità di espansione non corretta.

Ad esempio, data la richiesta seguente:

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

Se MaxExpansionDepth è 5, questa query genererà una profondità di espansione pari a 6.

Correzioni di bug e Aggiornamenti di funzionalità secondarie

Questa versione include anche diverse correzioni di bug e aggiornamenti secondari delle funzionalità.

API Web ASP.NET OData 5.3.1

In questa versione è stata apportata una correzione di bug ad alcune delle enumerazioni AllowedFunctions. Questa versione non include altre correzioni di bug o nuove funzionalità.