Bagikan melalui


Yang Baru di ASP.NET Web API OData 5.3

oleh Microsoft

Topik ini menjelaskan apa yang baru untuk ASP.NET Web API OData 5.3.

Unduh

Fitur runtime dirilis sebagai paket NuGet di galeri NuGet. Anda dapat menginstal atau memperbarui ke paket NuGet yang dirilis dengan menggunakan NuGet Package Manager Console:

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

Dokumentasi

Anda dapat menemukan tutorial dan dokumentasi lainnya tentang ASP.NET Web API OData di situs web ASP.NET.

Pustaka OData Core

Untuk OData v4, Api Web sekarang menggunakan ODataLib versi 6.5.0

Fitur Baru di ASP.NET Web API OData 5.3

Dukungan untuk $levels di $expand

Anda bisa menggunakan opsi kueri $levels dalam kueri $expand. Contohnya:

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

Kueri ini setara dengan:

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

Dukungan untuk Jenis Entitas Terbuka

Jenis terbuka adalah jenis terstruktur yang berisi properti dinamis, selain properti apa pun yang dideklarasikan dalam definisi jenis. Jenis terbuka memungkinkan Anda menambahkan fleksibilitas ke model data Anda. Untuk informasi selengkapnya, lihat xxxx.

Dukungan untuk properti koleksi dinamis dalam jenis terbuka

Sebelumnya, properti dinamis harus menjadi satu nilai. Dalam 5.3, properti dinamis dapat memiliki nilai koleksi. Misalnya, dalam payload JSON berikut, Emails properti adalah properti dinamis dan merupakan kumpulan jenis string:

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

Dukungan untuk pewarisan untuk jenis kompleks

Sekarang jenis kompleks dapat mewarisi dari jenis dasar. Misalnya, layanan OData dapat menentukan jenis kompleks berikut:

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

Berikut adalah EDM untuk contoh ini:

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

Untuk informasi selengkapnya, lihat Sampel Pewarisan Jenis Kompleks OData.

Masalah yang Diketahui dan Perubahan yang Melanggar

Bagian ini menjelaskan masalah yang diketahui dan melanggar perubahan di ASP.NET Web API OData 5.3.

OData v4

Opsi Kueri

Masalah: Menggunakan $expand berlapis dengan $levels=max menghasilkan kedalaman ekspansi yang salah.

Misalnya, mengingat permintaan berikut:

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

Jika MaxExpansionDepth adalah 5, kueri ini akan menghasilkan kedalaman ekspansi 6.

Perbaikan Bug dan Updates Fitur Minor

Rilis ini juga mencakup beberapa perbaikan bug dan pembaruan fitur kecil.

ASP.NET Web API OData 5.3.1

Dalam rilis ini kami membuat perbaikan bug untuk beberapa enum AllowedFunctions. Rilis ini tidak memiliki perbaikan bug atau fitur baru lainnya.