Compartilhar via


Novidades no ASP.NET Web API OData 5.3

pela Microsoft

Este tópico descreve as novidades do ASP.NET Web API OData 5.3.

Baixar

Os recursos de runtime são lançados como pacotes NuGet na galeria do NuGet. Você pode instalar ou atualizar para os pacotes NuGet lançados usando o Console do Gerenciador de Pacotes NuGet:

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

Documentação

Você pode encontrar tutoriais e outras documentações sobre ASP.NET Web API OData no site do ASP.NET.

Bibliotecas principais do OData

Para o OData v4, a API Web agora usa o ODataLib versão 6.5.0

Novos recursos no ASP.NET Web API OData 5.3

Suporte para $levels no $expand

Você pode usar a opção de consulta $levels em consultas $expand. Por exemplo:

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

Essa consulta é equivalente a:

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

Suporte para tipos de entidade aberta

Um tipo aberto é um tipo estruturado que contém propriedades dinâmicas, além de quaisquer propriedades declaradas na definição de tipo. Os tipos abertos permitem que você adicione flexibilidade aos seus modelos de dados. Para obter mais informações, consulte xxxx.

Suporte para propriedades de coleção dinâmica em tipos abertos

Anteriormente, uma propriedade dinâmica precisava ser um único valor. Na versão 5.3, as propriedades dinâmicas podem ter valores de coleção. Por exemplo, no seguinte conteúdo JSON, a Emails propriedade é uma propriedade dinâmica e é de coleção de tipo de cadeia de caracteres:

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

Suporte para herança para tipos complexos

Agora, tipos complexos podem herdar de um tipo base. Por exemplo, um serviço OData pode definir os seguintes tipos complexos:

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

Aqui está o EDM para este exemplo:

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

Para obter mais informações, consulte Exemplo de herança de tipo complexo OData.

Problemas conhecidos e alterações interruptivas

Esta seção descreve problemas conhecidos e alterações interruptivas no ASP.NET Web API OData 5.3.

OData v4

Opções de consulta

Problema: usar $expand aninhados com $levels=max resulta em uma profundidade de expansão incorreta.

Por exemplo, dada a seguinte solicitação:

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

Se MaxExpansionDepth for 5, essa consulta resultará em uma profundidade de expansão de 6.

Correções de bugs e Atualizações de recursos secundários

Esta versão também inclui várias correções de bugs e atualizações secundárias de recursos.

ASP.NET Web API OData 5.3.1

Nesta versão, fizemos uma correção de bug em algumas das enumerações AllowedFunctions. Esta versão não tem nenhuma outra correção de bug ou novos recursos.