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.
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.
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.
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>
}