Breaking News:

ASP.NET Core ile Kayıt Silme

Kayıt silme işlemi yaparken, farklı bir yöntem izleyeceğim. Veri tabanından kayıtları silmek yerine isAktif adında bir property ekleyeceğim. Eğer isAktif true ise bu kelimeye kullanıcı tarafından erişilsin, değil ise erişilmesin.

Model klasöründe yer alan Kelime modelinde aşağıdaki eklemeyi yapıyorum ve daha sonrasında migration yapıp, veri tabanını güncelliyorum:

using System.ComponentModel.DataAnnotations;

namespace OgrenKelime.Models
{
public class Kelime
{
[Key]
public int Id { get; set; }
public string? SKelime { get; set; }
public string? SAnlam { get; set; }
public DateTime DtKayitTarihi { get; set; } = DateTime.Now;
public bool IsAktif { get; set; } = true;
}
}
Migration ve db güncelleme:
PM> Add-Migration "3- IsAktif ekle"
PM> Update-Database
SQL Server Management Studio'dan kontrol sağlayalım:
Veri tabanı
Tabi var olan her kaydın IsAktif değeri false varsayılan olarak false(0) görünüyor. Ancak yeni bir kayıt eklersek IsAktif değerinin de True(1) olması gerekiyor. Örnek olarak bir tane kayıt ekleyelim ve veri tabanında nasıl kaydedildiğine bir bakalım:
Veri tabanı yeni kayıt
Bu noktadan itibaren kelime listeleme de bir düzenleme yapmamız gerekiyor. IsAktif değeri false olanlar kullanıcıya listelenmemeli. Sadece IsAktif değeri true olanlar kullanıcıya listelenmeli. KelimeController'da Get metotu olarak çalışan Listele() metodunda aşağıdaki değişiklik yapılır. Burada LINQ kullandık:
[HttpGet]
public async Task<IActionResult> Listele()
{
return View(await _context.Kelimes.Where(x => x.IsAktif == true).ToListAsync());
}
Sonuca bakalım:
Kelime Listeleme

Şimdi sıra silme işlemi yapacak olan bir action metodu yazmak:

        ...
[HttpGet]
public async Task<IActionResult> Sil(int? id)
{
if (id == null)
return NotFound();

Kelime? kelime = _context.Kelimes.FirstOrDefault(o => o.Id == id);

if (kelime == null)
return NotFound();

kelime.IsAktif = false;
await _context.SaveChangesAsync();

return RedirectToAction("Listele");
}
}
}
Listeleme.cshtml dosyasına sil butonu ekleyelim:
@model IEnumerable<OgrenKelime.Models.Kelime>
@addTagHelper*, Microsoft.AspNetCore.Mvc.TagHelpers
@{
ViewData["Title"] = "Kelime Listesi";
Layout = "~/Views/_Layout.cshtml";
}
@{
<h1>@ViewData["Title"]</h1>
<table class="table table-striped">
<thead>
<tr>
<th scope="col">Kelime</th>
<th scope="col">Anlamı</th>
<th scope="col">Kayıt Tarihi</th>
<th scope="col">İşlemler</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>@item.SKelime</td>
<td>@item.SAnlam</td>
<td>@item.DtKayitTarihi</td>
<td>
<a asp-action="Guncelle" asp-route-id="@item.Id">Güncelle</a>
<a asp-action="Sil" asp-route-id="@item.Id">Sil</a>
</td>
</tr>
}
</tbody>
</table>
}
Projeyi çalıştırıp, test edelim ama daha öncesinde birkaç tane yeni kayıt eklersek daha iyi olur:
Kayıt silme
Oldukça başarılı bir şekilde çalıştı. Yapmak istediğimizi yaptık. Ancak tek yöntem bu değil. Proje çok büyük olmadığı için bu tarz bir yöntem uygulamak bana daha mantıklı geldi.

Hiç yorum yok:

Blogger tarafından desteklenmektedir.