Novedades de ASP.NET Web API OData 5.3
por Microsoft
En este tema, se describen las novedades de ASP.NET Web API OData 5.3.
- Descargar
- Documentación
- Bibliotecas principales de OData
- Nuevas características
- Problemas conocidos y cambios importantes
- Correcciones de errores
- ASP.NET Web API OData 5.3.1
Descargar
Las características en tiempo de ejecución se publican como paquetes NuGet en la galería de NuGet. Puede instalar o actualizar los paquetes NuGet publicados mediante la consola del Administrador de paquetes NuGet:
Install-Package Microsoft.AspNet.OData -Version 5.3.0
Install-Package Microsoft.AspNet.WebApi.OData -Version 5.3.0
Documentación
Puede encontrar tutoriales y otra documentación sobre ASP.NET Web API OData en el sitio web de ASP.NET.
Bibliotecas principales de OData
Para OData v4, la API web ahora usa la versión 6.5.0 de ODataLib.
Nuevas características de ASP.NET Web API OData 5.3
Compatibilidad con $levels en $expand
Puede usar la opción de consulta $levels en consultas de $expand. Por ejemplo:
http://example.com/Employees?$expand=Manager($levels=2)
Esta consulta es equivalente a:
http://example.com/Employees?$expand=Manager($expand=Manager))
Compatibilidad con tipos de entidad abiertos
Un tipo abierto es un tipo estructurado que contiene propiedades dinámicas, además de las propiedades declaradas en la definición de tipo. Los tipos abiertos le permiten agregar flexibilidad a los modelos de datos. Para más información, consulte xxxx.
Compatibilidad con propiedades de colección dinámicas en tipos abiertos
Anteriormente, una propiedad dinámica tenía que ser un solo valor. En 5.3, las propiedades dinámicas pueden tener valores de colección. Por ejemplo, en la siguiente carga JSON, la propiedad Emails
es una propiedad dinámica y es una colección de tipo de cadena:
{
"Id": 1,
"Name": "Ben",
"Emails@odata.type": "#Collection(Edm.String)",
"Emails": [
"a@a.com",
"b@b.com"
]
}
Compatibilidad con la herencia de tipos complejos
Ahora los tipos complejos pueden heredarse de un tipo base. Por ejemplo, un servicio OData podría definir los siguientes tipos complejos:
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>();
}
}
Este es el EDM para este ejemplo:
<?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 más información, consulte Ejemplo de herencia de tipos complejos de OData.
Problemas conocidos y cambios importantes
En esta sección, se describen los problemas conocidos y los cambios importantes en ASP.NET Web API OData 5.3.
OData v4
Opciones de consulta
Problema: el uso de $expand anidados con $levels=max da como resultado una profundidad de expansión incorrecta.
Por ejemplo, dada la siguiente solicitud:
~/Entities(6)?$expand=P($levels=2;$expand=D($levels=max))
Si MaxExpansionDepth
es 5, esta consulta daría como resultado una profundidad de expansión de 6.
Correcciones de errores y actualizaciones de características secundarias
Esta versión también incluye varias correcciones de errores y actualizaciones de características secundarias.
ASP.NET Web API OData 5.3.1
En esta versión hemos realizado una corrección de errores en algunas de las enumeraciones AllowedFunctions. Esta versión no tiene ninguna otra característica nueva ni correcciones de errores.