Bir önceki makalemizde bir veritabanı modelini Entity Framework ile Database-First tekniğini kullanarak uygulamamıza dahil etmiştik. Bugün ise Insert, Update ve Delete işlemlerinin nasıl yapıldığını inceleyeceğiz. Data okuma işlemleri ile ilgili detaylı incelemeyi LINQ metotları başlığında ele almıştık.
EntityCrud adında bir veri tabanı oluşturarak içerisine Personel ve Departman adında iki tablo ekleyerek aralarındaki ilişkiyi belirtelim.
CREATE DATABASE EntityCRUD
USE EntityCRUD
CREATE TABLE Personel
(
Id INT PRIMARY KEY IDENTITY(1,1),
Ad NVARCHAR(30) NOT NULL,
Soyad NVARCHAR(30) NOT NULL,
Maas DECIMAL(10,3) NOT NULL,
DepartmanId INT NOT NULL
)
CREATE TABLE Departman
(
Id INT PRIMARY KEY IDENTITY(1,1),
DepartmanAd NVARCHAR(50) NOT NULL
)
ALTER TABLE Personel
ADD CONSTRAINT FK_Personel_Departman FOREIGN KEY(DepartmanId)
REFERENCES Departman(Id)
Bir Console uygulaması açalım. Daha sonra da oluşturduğumuz veri tabanını modelini uygulamamıza ekleyelim. Nasıl ekleyeceğimiz ile ilgili detaylı bilgileri bir önceki makalemizde bulabilirsiniz. Modelimizi ekledikten sonra Insert, select, update ve delete işlemlerini ayrı ayrı ele almaya çalışalım.
INSERT
Oluşturduğumuz Personel ve Departman tablolarında şuan hiçbir kayıt bulunmamaktadır. Uygulamamızdaki context nesnemiz üzerinden bu işlemi gerçekleştiriyor olacağız. Veritabanı modelini uygulamamıza dahil ettiğimizde Personel ve Departman adında 2 adet sınıf oluşturulmuştur. Bunlara entity sınıflar denir ve veri tabanı içerisindeki tablolaları temsil etmektedirler. Yapmamız gereken işlem son derece basit, bu sınıfların nesne örneklerini yaratarak context nesnesi yardımı ile kolayca insert yapabilme şansına sahibiz.
static void Main(string[] args)
{
EntityCRUDEntities context = new EntityCRUDEntities();
Departman dep = new Departman { DepartmanAd = "IT" };
context.AddToDepartman(dep);
context.SaveChanges();
}
Management Studio ile Departman tablosundaki dataları görüntülediğimizde IT adına sahip departmanın eklendiğini göreceğiz.
Şimdi de bu departmana sahip bir Persoenel ekleyelim.
EntityCRUDEntities context = new EntityCRUDEntities();
Personel pers = new Personel
{
Ad = "Onur",
Soyad = "Salkaya",
Maas = 1000,
DepartmanId = context.Departman.First(dep => dep.DepartmanAd == "IT").Id
};
context.AddToPersonel(pers);
context.SaveChanges();
Bir personel nesnesi üzerinden departman ekleyebilmemiz de mümkündür.
static void Main(string[] args)
{
EntityCRUDEntities context = new EntityCRUDEntities();
Departman dep = new Departman { DepartmanAd = "Muhasebe" };
Personel pers = new Personel
{
Ad = "Ali",
Soyad = "Veli",
Maas = 1500,
Departman = dep
};
context.AddToPersonel(pers);
context.SaveChanges();
}
Eklediğimiz Personel nesnesi üzerinde bir Departman nesnesi de mevcuttur. Dikkat ederseniz herhangi bir Departman eklemedik. Bu personel üzerinden yaptığımız işlemde Entity Framework departmanı da insert etmektedir.
UPDATE
Update işlemi yapmak , ilgili veri tabanı kaydını ram’e çıkarıp, bağlı olduğu property’e değer atayarak SaveChange() metodunu çalıştırmak demektir. Onur adlı personelin maaşını 2000 yapalım.
static void Main(string[] args)
{
EntityCRUDEntities context = new EntityCRUDEntities();
//Personel pers = context.Personel.FirstOrDefault(p => p.Ad == "Onur");
Personel pers = context.Personel.FirstOrDefault(p => p.Id == 1);
pers.Maas = 2000;
context.SaveChanges();
}
Bu personel üzerinden, bağlı olduğu departman kaydını da update edebilmemiz mümkündür. Onur adlı personel şu anda 1 numaralı departmana bağlı. Bu departmanın adı şu anda “IT”. pers nesnesi üzerinden update işlemi yaparak 1 numaralı departman adının “Pazarlama” olmasını sağlayalım.
static void Main(string[] args)
{
EntityCRUDEntities context = new EntityCRUDEntities();
Personel pers = context.Personel.FirstOrDefault(p => p.Id == 1);
pers.Departman.DepartmanAd = "Pazarlama";
context.SaveChanges();
}
DELETE
Update işleminde olduğu gibi silmek istediğimiz kaydı ram’e çıkarırız. Daha sonra DeleteObject metoduna parametre olarak vererek SaveChange metodunu çağırırız.
static void Main(string[] args)
{
EntityCRUDEntities context = new EntityCRUDEntities();
Personel pers = context.Personel.FirstOrDefault(p => p.Id == 2);
context.DeleteObject(pers);
context.SaveChanges();
}
Artık Personel tablomuzda adı Ali Veli olan ve 2 numaralı kaydı göremeyeceğiz.
