Поделиться через


Новые возможности веб-API ASP.NET OData 5.3

от Корпорации Майкрософт

В этом разделе описываются новые возможности веб-API ASP.NET OData 5.3.

Скачать

Функции среды выполнения выпускаются в виде пакетов NuGet в коллекции NuGet. Вы можете установить или обновить выпущенные пакеты NuGet с помощью консоли диспетчера пакетов NuGet:

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

Документация

Руководства и другую документацию по веб-API ASP.NET OData можно найти на веб-сайте ASP.NET.

Основные библиотеки OData

Для OData версии 4 веб-API теперь использует ODataLib версии 6.5.0.

Новые возможности веб-API ASP.NET OData 5.3

Поддержка $levels в $expand

Параметр запроса $levels можно использовать в $expand запросах. Пример:

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

Этот запрос эквивалентен:

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

Поддержка открытых типов сущностей

Открытый тип — это структурированный тип, который содержит динамические свойства в дополнение к свойствам, объявленным в определении типа. Открытые типы позволяют обеспечить гибкость моделей данных. Дополнительные сведения см. в разделе xxxx.

Поддержка свойств динамической коллекции в открытых типах

Ранее динамическое свойство должно было быть одним значением. В версии 5.3 динамические свойства могут иметь значения коллекции. Например, в следующих полезных данных Emails JSON свойство является динамическим свойством и имеет коллекцию строкового типа:

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

Поддержка наследования для сложных типов

Теперь сложные типы могут наследовать от базового типа. Например, служба OData может определить следующие сложные типы:

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

Ниже приведен пример EDM:

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

Дополнительные сведения см. в разделе Пример наследования сложных типов OData.

Известные проблемы и критические изменения

В этом разделе описываются известные проблемы и критические изменения в веб-API ASP.NET OData 5.3.

OData v4

Параметры запроса

Проблема. Использование вложенных $expand с $levels=max приводит к неправильной глубине расширения.

Например, при выполнении следующего запроса:

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

Если MaxExpansionDepth значение равно 5, этот запрос приведет к глубине расширения 6.

Исправления ошибок и Обновления дополнительных функций

Этот выпуск также включает несколько исправлений ошибок и незначительных обновлений компонентов.

веб-API ASP.NET OData 5.3.1

В этом выпуске мы внесли исправление ошибки в некоторые перечисления AllowedFunctions. В этом выпуске нет других исправлений ошибок или новых функций.