ASP.NET Web API'sindeki Yenilikler OData 5.3

Microsoft tarafından

Bu konu başlığında ASP.NET Web API OData 5.3'e yönelik yenilikler açıklanmaktadır.

İndir

Çalışma zamanı özellikleri NuGet galerisinde NuGet paketleri olarak yayınlanmaktadır. NuGet Paket Yöneticisi Konsolu'nu kullanarak yayımlanan NuGet paketlerini yükleyebilir veya güncelleştirebilirsiniz:

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

Belgeler

ASP.NET Web API OData ile ilgili öğreticileri ve diğer belgeleri ASP.NET web sitesinde bulabilirsiniz.

OData Core Kitaplıkları

OData v4 için Web API'sinde artık ODataLib sürüm 6.5.0 kullanılıyor

ASP.NET Web API'sindeki Yeni Özellikler OData 5.3

$expand'da $levels desteği

sorgularda $levels sorgu seçeneğini $expand kullanabilirsiniz. Örnek:

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

Bu sorgu şuna eşdeğerdir:

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

Açık Varlık Türleri desteği

Açık tür, tür tanımında bildirilen özelliklere ek olarak dinamik özellikler içeren yapılandırılmış bir türdür. Açık türler, veri modellerinize esneklik eklemenize olanak tanır. Daha fazla bilgi için bkz. xxxx.

Açık türlerdeki dinamik koleksiyon özellikleri desteği

Daha önce dinamik özelliğin tek bir değer olması gerekiyordu. 5.3'te dinamik özelliklerin koleksiyon değerleri olabilir. Örneğin, aşağıdaki JSON yükünde Emails özelliği dinamik bir özelliktir ve dize türünde bir koleksiyondur:

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

Karmaşık türler için devralma desteği

Artık karmaşık türler bir temel türden devralabilir. Örneğin, bir OData hizmeti aşağıdaki karmaşık türleri tanımlayabilir:

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

Bu örneğin EDM'sini aşağıda bulabilirsiniz:

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

Daha fazla bilgi için bkz. OData Karmaşık Tür Devralma Örneği.

Bilinen Sorunlar ve Hataya Neden Olan Değişiklikler

Bu bölümde, ASP.NET Web API OData 5.3'teki bilinen sorunlar ve hataya neden olan değişiklikler açıklanmaktadır.

OData v4

Sorgu Seçenekleri

Sorun: $levels=max ile iç içe $expand kullanılması yanlış genişletme derinliğine neden olur.

Örneğin, aşağıdaki istek göz önünde bulundurulduğunda:

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

5 ise MaxExpansionDepth , bu sorgu 6 genişletme derinliğine neden olur.

Hata Düzeltmeleri ve İkincil Özellik Güncelleştirmeler

Bu sürüm çeşitli hata düzeltmeleri ve küçük özellik güncelleştirmeleri de içerir.

web API'sini ASP.NET OData 5.3.1

Bu sürümde bazı AllowedFunctions sabit listelerinde bir hata düzeltmesi yaptık. Bu sürümde başka hata düzeltmeleri veya yeni özellikler yoktur.