MVCSHARP Ailesi ile yazılım geliştirmeye dair makaleler

Linq ve Entity Framework Temel veri tabanı işlemleri MVC

Merhaba arkadaşlar ;

Bu makalemizde veri tabanımız üzerinde linq to sql ve entity framework ile işlemler yapacağız.

Not : Bu makale Projeye Veri Tabanı Ekleme ve AdoNet Entity Data Model Oluşturma makalemizin devamıdır.

Yaptığımız uygulamanın son halini buradan indirebilir ve inceleyebilirsiniz.

Evet arkadaşlar örneğimize kaldığımız yerden devam edelim ve öncelikle kayıt ekleme yapalım.

Şimdi Controllers klasörümüze gelelim ve sağ tık Add > Controller seçeneklerini takip edelim. Açılan pencereden Controllerimize HomeController ismini verdikten sonra Add seçimini yapalım.

Add new Controller

HomeController

Evet arkadaşlar ekleme işlemimizi yaptık şimdi Controller içerisine veri tabanımızı ekleme işlemi yapacağımız Ekle adında bir ActionResult ekleyelim. Yeni bir kayıt ekleyeceğimiz için sayfamıza boş bir Öğrenci modeli döndürelim. 

        public ActionResult Ekle()
        {
            return View(new Models.Ogrenciler());
        }

ActionResult'umuzu oluşturduk şimdi POST işleminden sonra olacakları yazalım. Yani kayıt ekleme işlemimizi burda gerçekleştireceğiz.

        [HttpPost]
        public ActionResult Ekle(Models.Ogrenciler tbl)
        {
            using (Models.MyDBEntities db = new Models.MyDBEntities())
            {
                db.Ogrencilers.Add(tbl);
                db.SaveChanges();
            }
            return View(new Models.Ogrenciler());
        }

Yukarıdaki kod bloğunu incelersek aynı isimle oluşturduğumuz ActionResult'umuz parametre olarak Ogrenciler tipinde tablo almaktadır. Using içerisinde veri tabanımızı tanımlayarak gelen Ögrenciler tipindeki verileri Ögrenciler tablomuza ekledik ve kaydetme işlemini gerçekleştirdik.

Şimdi view oluşturalım. ActionResult üzerine gelerek Add > View seçeneklerini takip edelim ve boş bir view ekleyelim. Ardından html sayfamızın başında modelimizi tanımlayalım ve tabi birde form oluşturmamız gerekli. Sayfamızın kodları aşağıdaki gibi olacaktır.

@model Sorgular.Models.Ogrenciler
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Ekle</title>

</head>
<body>
    <div>
        @using (Html.BeginForm())
        {
        
            <div>
                @Html.LabelFor(x => x.Adi)
                @Html.TextBoxFor(x => x.Adi)
            </div>
            <br />
            <br />
            
            <div>
                @Html.LabelFor(x => x.Soyadi)
                @Html.TextBoxFor(x => x.Soyadi)
            </div>
            <br />
            <br />
            
            <div>
                @Html.LabelFor(x => x.OgrNo)
                @Html.TextBoxFor(x => x.OgrNo)
            </div>
            <br />
            <br />
            
            <input type="submit" name="name" value="Kaydet" />
        }
    </div>
</body>
</html>

 

Evet arkadaşlar şimdi ekleme işlemi yaptık. Eklediğimiz verileri görmek için de Listeleme yapalım. Aynı sayfa içerisinde @ { } içerisine kodlarımızı yazalım 

@{
    Layout = null;
    
    var db = new Sorgular.Models.MyDBEntities();
    
    
    var Liste = (from i in db.Ogrencilers
                 orderby i.ID descending
                 select i).ToList();
}

Yukarıdaki kod bloğunu incelersek öncelikle databasemizi tanımladık, ardından Linq ile Tüm öğrencilerimizi çektik ve orderby i..ID descending diyerek ID ye göre artandan azalana doğru sıralama yaptık. Şimdi Listemizi oluşturduğumuza göre verilerimizi Listeleyelim.

<div>
        <table>
            <thead>
                <tr>
                    <td>Adı</td>
                    <td>Soyadı</td>
                    <td>Ogr NO</td>
                </tr>
            </thead>
            <tbody>
                @foreach (var item in Liste)
                {
                    <tr>
                        <td>@item.Adi</td>
                        <td>@item.Soyadi</td>
                        <td>@item.OgrNo</td>
                    </tr>
                }
            </tbody>
        </table>
    </div>

Listelememizi de yaptığımıza göre biraz kayıt ekleyebiliriz cool Ben bir kaç adet kayıt ekledim sonuç ekranımız aşağıdaki gibidir.

Kayıt Ekranı

Şimdi Geldi Silme işlemimize indecision Silme işleminde bize verilerimizin ID leri gerekecek. ID ikarşılığı olan kaydımızı çekeceğiz ve ardından o kaydı sileceğiz.

Şimdi tablomuz üzerinde düzenleme yapalım, sil ve düzenle alanları ekleyelim. Düzenle alanımızı daha sonra kullanacağız

Listemizin thead tagları arasına

<td>Sil</td>
<td>Düzenle</td>

 

Listemizin tbody tagları arasına

<td><a href="/Home/Sil/@item.ID">Sil</a></td>
<td><a href="/Home/Duzenle/@item.ID">Düzenle</a></td>

Kodlarımızı ekleyelim. Şimdi controller üzerinde silme fonksiyonumuzu yazalım.

        public ActionResult Sil(int ID)
        {
            using (Models.MyDBEntities db = new Models.MyDBEntities())
            {
                var data = (from i in db.Ogrencilers
                            where i.ID == ID
                            select i).FirstOrDefault();

                db.Ogrencilers.Remove(data);
                db.SaveChanges();
            }

            return Redirect("/Home/Ekle");
        }

Yukarıdaki kod bloğunu incelersek Sil ActionResult'umuz parametre olarak int türünde ID almaktadır. Using içerisinde veri tabanımızı tanımladıktan sonra Öğrenciler tablomuzdan ID parametresi ile eşleşen kaydımızı çektik ve kaydımızı sildikten sonra veri tabanımızdaki değişiklikleri kaydettik. sonra return Redirect diyerek Sayfamıza yönlendirdik.

Şimdi Sil fonksiyonunu test edebiliriz kayıtlarımızın silindiğini görebilirsiniz.

Şimdi sıra geldi güncelleme işlemimize, Aynı ekle sayfasını oluşturduğumuz gibi bir düzenle sayfası oluşturalım ve bir de view ekleyelim.Sayfamız ekle sayfası ile tamamen aynı olacak sadece table yani listeleme yaptığımız kodlarımızı silelim. Controller üzerindeki kod bloğumuz aşağıdaki gibi olacaktır.


        public ActionResult Duzenle(int ID)
        {
            using (Models.MyDBEntities db = new Models.MyDBEntities())
            {
                var data = (from i in db.Ogrencilers
                            where i.ID == ID
                            select i).FirstOrDefault();
                return View(data);
            }
        }

        [HttpPost]
        public ActionResult Duzenle(int ID, Models.Ogrenciler tbl)
        {
            using (Models.MyDBEntities db = new Models.MyDBEntities())
            {
                var data = (from i in db.Ogrencilers
                            where i.ID == ID
                            select i).FirstOrDefault();

                data.OgrNo = tbl.OgrNo;
                data.Adi = tbl.Adi;
                data.Soyadi = tbl.Soyadi;
                db.SaveChanges();
                return Redirect("/Home/Ekle");

            }
        }

Arkadaşlar şimdi kodlarımızı inceleyelim.  İlk Düzenle ActionResult'umuzda ID parametremizi aldık ve veri tabanından kaydımızı çektik return view(data) diyerek çektiğimiz kaydımızı sayfamıza gönderdik.

İkinci ActionResult'umuz da ise Post işlemi yaptıktan sonra ID karşılığı olan verimizi çektik ve Post ile elde ettiğimiz yeni verilerimizle karşılıklı eşleştirmeler yaptık. Son olarak veri tabanımızdaki değişiklikleri kaydettik ve Listeleme sayfamıza yönlendirme yaptık. 

Özet Geçecek olursak

  • Select
  var data = (from i in db.Ogrencilers
                            where i.ID == ID
                            select i).FirstOrDefault();
  • List
   var Liste = (from i in db.Ogrencilers
                 orderby i.ID descending
                 select i).ToList();
  • insert
db.Ogrencilers.Add(tbl);
db.SaveChanges();
  • update
 var data = (from i in db.Ogrencilers
                            where i.ID == ID
                            select i).FirstOrDefault();

                data.OgrNo = tbl.OgrNo;
                data.Adi = tbl.Adi;
                data.Soyadi = tbl.Soyadi;
                db.SaveChanges();

 

Arkadaşlar umarım faydalı bir paylaşım olmuştur.

Bir Sonraki Makalede Görüşmek Üzere 

Saygılarımla Fatih BÜLBÜL

Facebook Üzerinden Yorumlar