OData CRUD İşlemleri

Merhaba,

OData her ne kadar url üzerinden veri kaynaklarını sorgulama protokolü olsada temel CRUD işlemlerini destekleyen niteliklerede sahiptir. Şimdi gelin OData ile CRUD işlemlerinin nasıl yapıldığını inceleyelim.

GET
OData üzerinden GET isteği ile veri okuma işleminde bulunabilmek için şuana kadar önceki makalelerde yaptığımız çalışmalardaki gibi bir action oluşturulması yeterli olacaktır.

    public class PersonelController : ODataController
    {
        .
        .
        .
        [EnableQuery]
        public IActionResult Get()
        {
            return Ok(_northwindContext.Personeller);
        }
    }

Örnek URL : https://localhost:5001/odata/personel

Tabi id bazlı sorgulama ile birlikte daha da özelleştirilmiş GET operasyonlarının inşası için şu ve şu makalelere göz atmanızı öneririm.

POST
POST işlemi için aşağıdaki imzalardan birinde action oluşturulması yeterlidir.

    public class PersonelController : ODataController
    {
        .
        .
        .
        [HttpPost]
        public bool Post([FromBody] Personel personel)
        {
            _northwindContext.Personeller.Add(personel);
            _northwindContext.SaveChanges();
            return true;
        }
    }

ya da

    public class PersonelController : ODataController
    {
        .
        .
        .
        [HttpPost]
        public bool PostPersonel([FromBody] Personel personel)
        {
            _northwindContext.Personeller.Add(personel);
            _northwindContext.SaveChanges();
            return true;
        }
    }

Örnek URL :
OData CRUD İşlemleri
PUT
PUT işlemi içinde aşağıdakine benzer imzalarda actionlar oluşturulabilir.

    public class PersonelController : ODataController
    {
        .
        .
        .
        [HttpPut]
        public bool Put([FromODataUri] int key, [FromBody] Personel personel)
        {
            personel.PersonelId = key;
            _northwindContext.Entry(personel).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
            _northwindContext.SaveChanges();
            return true;
        }
    }

ya da

    public class PersonelController : ODataController
    {
        .
        .
        .
        [HttpPut]
        public bool PutPersonel([FromODataUri] int key, [FromBody] Personel personel)
        {
            personel.PersonelId = key;
            _northwindContext.Entry(personel).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
            _northwindContext.SaveChanges();
            return true;
        }
    }

Örnek URL :
OData CRUD İşlemleri
DELETE
DELETE işlemi içinde yukarıdakilere benzer nitelikte actionlar oluşturulması yeterlidir.

    public class PersonelController : ODataController
    {
        .
        .
        .
        [HttpDelete]
        public IActionResult Delete([FromODataUri] int key)
        {
            Personel silinecekPersonel = _northwindContext.Personeller.Find(key);
            if (silinecekPersonel == null) return NotFound();
            _northwindContext.Remove(silinecekPersonel);
            _northwindContext.SaveChanges();
            return Ok(true);
        }
    }

ya da

    public class PersonelController : ODataController
    {
        .
        .
        .
        [HttpDelete]
        public IActionResult DeletePersonel([FromODataUri] int key)
        {
            Personel silinecekPersonel = _northwindContext.Personeller.Find(key);
            if (silinecekPersonel == null) return NotFound();
            _northwindContext.Remove(silinecekPersonel);
            _northwindContext.SaveChanges();
            return Ok(true);
        }
    }

Örnek URL : https://localhost:5001/odata/personel(10)

GET dışında POST, PUT ve DELETE fonksiyonlarını ‘EnableQuery’ attribute’u ile işaretlemediğimize dikkatinizi çekerim.

Metotları Özelleştirme

Yukarıda oluşturduğumuz belirli kurallardaki metotları kısmi özelleştirebilmek için OData Davranış Modellemesi ve Attributeları makalesinde olduğu gibi ‘ODataRoute’ attribute’u ile işaretleyebilmekteyiz.

Örneğin;

        [HttpDelete]
        [ODataRoute("personel({id})")]
        public IActionResult Sil([FromODataUri] int id)
        {
            Personel silinecekPersonel = _northwindContext.Personeller.Find(id);
            if (silinecekPersonel == null) return NotFound();
            _northwindContext.Remove(silinecekPersonel);
            _northwindContext.SaveChanges();
            return Ok(true);
        }

şeklinde olduğu gibi…

İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*