OData CRUD (Create, Read, Update, Delete) İşlemleri

asp-net-core-api-odata

Open Data ile yalnızca seçme ($select), filtreleme ($filter), sıralama ($orderby) v.b. işlemleri yapmıyor; ayrıca crud işlemlerini de gerçekleştirebiliyoruz. Bu yazıda bu işlemleri nasıl yaptığımızı inceliyor olacağız, önceki OData yazılarıma bakmadıysan aşağıdan ulaşabilirsin.

Yazıya başlamadan evvel; bu işlemleri direk olarak Entity Framework ile iletişimde olarak değil kendi mimari yapına uygulayarak da kullanabilirsin. (Örneğin: Repository Pattern) Ayrıca Crud işlemleri için custom routing kullanmak istersen bir önceki yazıma yukarıdan ulaşabilir veya resmi sitesindeki dökümantasyonuna göz atabilirsin. Şimdi routing conventionları tekrar hatırlayalım. OData yazı serisi boyunca kullanmış olduğum projeye buradan erişebilirsin.

MethodUriActionController
POST/CategoriesPost(Category)CategoriesController
PostCategory(Category)
PUT/Categories(1)Put(key, Category)
PutCategory(key, Category)
DELETE/Categories(1)Delete(key)
DeleteCategory(key)

Create işlemleri

Create ile kayıt oluşturma işlemlerini POST metoduyla gerçekleştiriyoruz, işlemi gerçekleştirecek action methodumuzu yazalım.

public class CategoriesController : ODataController
{
	[HttpPost]
	public IActionResult Post([FromBody] Category category)
	{
		_dbContext.Categories.Add(category);
		_dbContext.SaveChanges();

		return Ok(category);
	}
}

https://localhost:44357/odata/categories adresine ekleyeceğimiz kategori bilgilerini POST edelim.

{
    "Name": "Motosiklet",
    "Description": "Lorem ipsum dolor sit amet.",
    "CreatedOn": "2021-01-03T18:08:01.1375544+03:00"
}
odata-crud-post

Read işlemleri

Daha önce bu işlemi gerçekleştirecek action methodumuzu yazmıştık, bütünlük oluşturması amacıyla burada da yazacağım, detaylı bilgi almak için önceki yazıma göz atabilirsin. Bu method GET ile çalışacaktır.

[EnableQuery]
public IActionResult Get([FromODataUri] int key)
{
	return Ok(_dbContext.Categories.Where(w => w.Id == key));
}

https://localhost:44357/odata/categories(1) adresine istek attığımızda ilgili kategori bilgisini aldığımızı göreceğiz.

Update işlemleri

Update ile kayıt güncelleme işlemlerini PUT metoduyla gerçekleştiriyoruz, işlemi gerçekleştirecek action methodumuzu yazalım.

[HttpPut]
public IActionResult Put([FromODataUri]int key, [FromBody] Category category)
{
	category.Id = key;
	_dbContext.Entry(category).State = EntityState.Modified;
	_dbContext.SaveChanges();

	return Updated(category);
}

https://localhost:44357/odata/categories adresine ekleyeceğimiz kategori bilgilerini PUT edelim.

{
	"Name": "Motosiklet",
	"Description": "Lorem ipsum dolor sit amet.",
	"CreatedOn": "2021-01-03T18:08:01.1375544+03:00"
}

https://localhost:44357/odata/categories(4) adresine istek attığımızda bilgilerimizin güncellendiğini göreceğiz.

Delete işlemleri

Delete ile kayıt silme işlemlerini DELETE metoduyla gerçekleştiriyoruz, işlemi gerçekleştirecek action methodumuzu yazalım.

[HttpDelete]
public IActionResult Delete([FromODataUri] int key)
{
	var categoryToDelete = _dbContext.Categories.Find(key);
	if(categoryToDelete == null)
	{
		return NotFound();
	}

	_dbContext.Categories.Remove(categoryToDelete);
	_dbContext.SaveChanges();

	return NoContent();
}

https://localhost:44357/odata/categories(4) adresine istek gönderdiğimizde kaydımızın silindiğini görüyor olacağız.

You may also like...

Bir yanıt yazın

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