MVC 5 ile Entity Framework Kullanarak Müşteri Ekleme ve Güncelleme

Bu örnek, MVC 5 ve Entity Framework kullanarak, hem yeni müşteri eklemeyi hem de mevcut bir müşteriyi güncellemeyi içerir. MVC Controller'ı ve View'ı içeren bir örnek kod sunar.

Bu örnek, MVC (Model-View-Controller) mimarisi kullanılarak oluşturulan bir web uygulamasında, Entity Framework ile veritabanına müşteri ekleme ve güncelleme işlemlerini gerçekleştirmenizi gösterir.

  1. Müşteri Modeli (Musteri.cs): Musteri adlı bir sınıf oluşturuyoruz. Bu sınıf, müşteriye ait temel bilgileri içerir: ad, soyad, adres, telefon ve e-posta. Bu bilgiler, veritabanı tablosunda sütunlara karşılık gelecektir.

  2. MVC Controller (MusteriController.cs): MusteriController adlı bir Controller sınıfı oluşturuyoruz. Bu Controller, müşteri ekleme ve güncelleme işlemlerini yönetir. Controller içinde iki action method bulunur:

    • MusteriEkleGuncelle(int? musteriId): Bu method, müşteri eklemek veya güncellemek için kullanılır. Eğer musteriId belirtilirse, mevcut bir müşteriyi güncellemek amacıyla sayfa gösterilir. Eğer musteriId belirtilmezse, yeni bir müşteri eklemek için boş bir müşteri oluşturulur.

    • [HttpPost] MusteriEkleGuncelle(Musteri musteri): Bu method, müşteri bilgilerini alır ve bu bilgilere göre yeni müşteri ekler veya mevcut müşteriyi günceller. Model doğrulama işlemi yapar ve veritabanına değişiklikleri kaydeder.

    • MusteriListesi(): Tüm müşterileri listeleyen bir sayfayı gösterir.

  3. MVC View (MusteriEkleGuncelle.cshtml): MusteriEkleGuncelle.cshtml adlı bir View dosyası oluşturuyoruz. Bu dosya, müşteri bilgilerini girmek veya güncellemek için kullanılır. View içinde, giriş alanları ve form oluşturulur. Bu View, Controller'dan gelen modelle bağlantılıdır ve modelin doğrulama özelliklerini kullanır.

Bu örnek, MVC 5 ve Entity Framework kullanarak müşteri ekleme ve güncelleme işlemlerini aynı Controller içinde ele alır. Veritabanı işlemlerini yönetmek için MyDbContext sınıfını oluşturmanız ve Entity Framework Code First yaklaşımını kullanarak veritabanınızı yapılandırmanız gerekmektedir. Bu örnek, temel CRUD (Create, Read, Update, Delete) işlemlerini anlamanıza yardımcı olabilir.

using System.ComponentModel.DataAnnotations;

public class Musteri
{
    public int MusteriId { get; set; }

    [Required]
    [StringLength(50)]
    public string Ad { get; set; }

    [Required]
    [StringLength(50)]
    public string Soyad { get; set; }

    [StringLength(100)]
    public string Adres { get; set; }

    [StringLength(20)]
    public string Telefon { get; set; }

    [Required]
    [StringLength(100)]
    [EmailAddress]
    public string Email { get; set; }
}

 

using System.Linq;
using System.Web.Mvc;

public class MusteriController : Controller
{
    private MyDbContext dbContext = new MyDbContext(); // Veritabanı bağlamı

    public ActionResult MusteriEkleGuncelle(int? musteriId)
    {
        Musteri musteri;

        if (musteriId.HasValue)
        {
            // Müşteri güncelleme için sayfasını göster
            musteri = dbContext.Musteriler.Find(musteriId);
        }
        else
        {
            // Yeni müşteri eklemek için boş bir müşteri oluştur
            musteri = new Musteri();
        }

        return View("MusteriEkleGuncelle", musteri);
    }

    [HttpPost]
    public ActionResult MusteriEkleGuncelle(Musteri musteri)
    {
        if (ModelState.IsValid)
        {
            if (musteri.MusteriId == 0)
            {
                // Yeni müşteri ekleniyor
                dbContext.Musteriler.Add(musteri);
            }
            else
            {
                // Müşteri güncelleniyor
                var existingMusteri = dbContext.Musteriler.Find(musteri.MusteriId);
                if (existingMusteri != null)
                {
                    existingMusteri.Ad = musteri.Ad;
                    existingMusteri.Soyad = musteri.Soyad;
                    existingMusteri.Adres = musteri.Adres;
                    existingMusteri.Telefon = musteri.Telefon;
                    existingMusteri.Email = musteri.Email;
                }
            }

            dbContext.SaveChanges();
            return RedirectToAction("MusteriListesi");
        }

        return View("MusteriEkleGuncelle", musteri);
    }

    public ActionResult MusteriListesi()
    {
        var musteriler = dbContext.Musteriler.ToList();
        return View("MusteriListesi", musteriler);
    }
}

 

@model YourNamespace.Musteri

@using (Html.BeginForm("MusteriEkleGuncelle", "Musteri", FormMethod.Post))
{
    @Html.HiddenFor(model => model.MusteriId)

    <div class="form-group">
        @Html.LabelFor(model => model.Ad)
        @Html.TextBoxFor(model => model.Ad, new { @class = "form-control" })
        @Html.ValidationMessageFor(model => model.Ad)
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Soyad)
        @Html.TextBoxFor(model => model.Soyad, new { @class = "form-control" })
        @Html.ValidationMessageFor(model => model.Soyad)
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Adres)
        @Html.TextBoxFor(model => model.Adres, new { @class = "form-control" })
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Telefon)
        @Html.TextBoxFor(model => model.Telefon, new { @class = "form-control" })
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Email)
        @Html.TextBoxFor(model => model.Email, new { @class = "form-control" })
        @Html.ValidationMessageFor(model => model.Email)
    </div>

    <button type="submit" class="btn btn-primary">Kaydet</button>
}