OData Connected Service

asp-net-core-api-odata

OData Connected Service bir OData servisinden, servis kodları üreten ve Visual Studio için geliştirilmiş bir uzantıdır. Servis ile iletişime geçmek için DataServiceContext türünde bir sınıf oluşturur. Bu eklentiyi Visual Studio Marketplace üzerinden veya Visual Studio içerisindeki Extensions menüsünden kurabilir ve OData yazı serisi boyunca kullanmış olduğum projeye buradan erişebilirsin.

odata-connected-service-extension

İlgili OData servisini projemize dahil etmek için Add > Connected Service kısayolu kullanılır.

add-odata-connected-service

Açılan pencereden OData Connected Service seçilerek işleme devam edilir.

create-odata-connected-service

Devam ettiğimizde ekleyeceğimiz servisle ilgili konfigürasyon yapacağımız bir wizard penceresiyle karşılaşacağız.

odata-service-configuration

Burada ekleyeceğimiz servise uygun bir isim verdikten sonra çalışmakta olan OData servisimizin $metadata bilgilerini içeren adres bilgisini Address kutucuğuna belirttikten sonra Finish diyerek servisimizi ekliyoruz. İleri konfigürasyon ayarlarında tüm servis bileşenleri yerine ekleyeceğimiz varlıkları (entity), function ve action‘ları da seçebiliyoruz.

Artık servisimizi kullanmaya başlayabiliriz. Oluşturmuş olduğumuz Console uygulaması içerisinde servisimizden veri çekmeye başlayabiliriz.

static void Main(string[] args)
{
	var serviceRoot = "https://localhost:44357/odata";
	var context = new Container(new Uri(serviceRoot));

	var vehicles = context.Vehicles.ExecuteAsync().Result;
	foreach (var vehicle in vehicles)
	{
		Console.WriteLine($"{vehicle.Id} - {vehicle.Model}");
	}
}

Uygulamayı çalıştırdığımızda konsola verilerin basıldığını göreceğiz. Örneklerimizi query options kullanarak daha da çeşitlendirelim.

var expandedVehicles = context.Vehicles.Expand(e => e.Manufacturer).ExecuteAsync().Result;
foreach (var vehicle in expandedVehicles)
{
	Console.WriteLine($"{vehicle.Id} - {vehicle.Manufacturer.Name} {vehicle.Model}");
}

You may also like...

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir