LINQ to SQL ile Veritabanı İşlemleri (Ekleme, Güncelleme, Silme)

LINQ to SQL ile Veritabanı İşlemleri (Ekleme, Güncelleme, Silme)

LINQ to SQL ile veritabanında yapılan işlemler kolay ve hızlıdır Veritabanına bağlanmak için bir bağlantı dizesi oluşturulur ve DataContext sınıfı kullanılır Veri ekleme, güncelleme ve silme işlemleri için InsertOnSubmit, Update ve DeleteOnSubmit gibi metotlar kullanılır ve değişiklikler SubmitChanges metodu ile kaydedilir Veri ekleme işlemi için ise DataContext sınıfına yeni bir entity eklenir LINQ to SQL, NET Framework ile birlikte kullanılabilir ve zaman kazandırır

LINQ to SQL ile Veritabanı İşlemleri (Ekleme, Güncelleme, Silme)

LINQ to SQL ile veritabanında yapılan ekleme, güncelleme ve silme işlemleri oldukça kolay ve hızlı bir şekilde gerçekleştirilebilir. LINQ to SQL, Microsoft tarafından geliştirilmiş bir teknolojidir ve .NET Framework ile birlikte kullanılır. Bu teknoloji ile veritabanında yapılan işlemler, veritabanına bağlanma işlemi, veri ekleme, güncelleme ve silme işlemleri gibi kolay adımlarla gerçekleştirilir.

Veritabanına bağlanma işlemi ile başlayan LINQ to SQL işlemleri, veritabanındaki tablolar üzerinde gerçekleştirilir. Veritabanına bağlanmak için gerekli olan bilgiler, veritabanı sunucusu adı, kullanıcı adı ve şifre gibi bilgileri içeren bir bağlantı dizesidir. Bu bağlantı dizesi ile veritabanına bağlanma işlemi gerçekleştirilir ve veri ekleme, güncelleme ve silme işlemleri yapılabilir.

  • Veri Ekleme: LINQ to SQL kullanarak veritabanına yeni veri ekleme işlemi kolayca yapılabilir. InsertOnSubmit metodu kullanılarak yeni bir kayıt oluşturulur ve SubmitChanges metodu aracılığı ile değişiklikler veritabanına kaydedilir.
  • Veri Güncelleme: Var olan verilerin güncellenmesi işlemi için Update ve Attach metotları kullanılır. Update metodu ile var olan bir kaydın güncelleme işlemi, Attach metodu ile ise güncelleme işlemi için veritabanı kaydının hazır hale getirilmesi işlemi yapılır.
  • Veri Silme: Var olan verilerin silme işlemi için DeleteOnSubmit ve SubmitChanges metotları kullanılır. DeleteOnSubmit metodu ile veritabanında var olan bir kayıt silinir, SubmitChanges metodu ise silme işlemi sonrası değişikliklerin veritabanına kaydedilmesi için kullanılır.

LINQ to SQL kullanarak veritabanında yapılan işlemler zaman kazandırır ve verilerin kolayca yönetilmesini sağlar. Veri ekleme, güncelleme ve silme işlemleri için belirli adımların izlenmesi gerektiği gibi değişiklikler de SubmitChanges metodu ile birlikte veritabanına kaydedilir. Bu teknoloji, .NET Framework ile birlikte kullanılabileceği gibi diğer .NET tabanlı platformlarda da kullanılabilir.


Veritabanına Bağlanma

LINQ to SQL ile veritabanı işlemleri yapabilmek için öncelikle veritabanına bağlanmak gerekmektedir. LINQ to SQL, SQL Server veritabanlarına erişebilir ve bu veritabanlarındaki tablolara sorgular gönderebilir. Veritabanına bağlanmak için öncelikle SqlConnection sınıfı kullanılır. Bu sınıf, .NET Framework'taki ADO.NET kütüphanesinde yer alır ve SQL Server veritabanı sunucusuna bağlantı için gerekli olan tüm işlemleri yürütür.

Veritabanına bağlanmak için bazı yapılandırma ayarlarına da ihtiyaç vardır. Bu ayarlar, SqlConnection sınıfının ConnectionString özelliği ile atanan bir dize şeklinde sağlanır. Bu dize, veritabanı sunucu adını, veritabanı adını, kullanıcı adını ve şifreyi içermelidir. Bu ayarlar, genellikle web.config dosyasında tanımlanır ve gerektiğinde değiştirilebilir. Ayrıca, bu ayarlara ek olarak çeşitli seçenekler de tanımlanabilir. Bu seçenekler arasında Connection Timeout, Max Pool Size, Min Pool Size, Pooling vb. yer alır. Bu seçenekler, veritabanına bağlanmadan önce SqlConnectionStringBuilder sınıfı kullanılarak programatik olarak ayarlanabilir veya web.config dosyasında tanımlanabilir.

Veritabanına bağlanma işlemi tamamlandıktan sonra, LINQ to SQL ile veritabanında çeşitli işlemler yapılabilir. Bu işlemler arasında veri ekleme, güncelleme ve silme işlemleri yer alır. Bu işlemler, DataContext sınıfının InsertOnSubmit(), Update() ve DeleteOnSubmit() metotları kullanılarak gerçekleştirilebilir. Bunun yanı sıra, SubmitChanges() metodu kullanılarak yapılan değişiklikler veritabanına aktarılabilir.

ConnectionString Seçenekleri Açıklama
Application Name Bağlantının yapıldığı uygulama adı
Connect Timeout Bağlantı zaman aşımı aralığı (saniye)
Integrated Security Windows Authentication kullanarak kimlik doğrulama yapar
Password Bağlantı şifresi
UID Bağlantı kullanıcı adı

Veri Ekleme

LINQ to SQL kullanarak veritabanına yeni veri ekleme işlemleri oldukça kolaydır. Bunun için DataContext sınıfının nesnesi üzerinden yapacağımız işlemleri gerçekleştirebiliriz. İlk olarak, DataContext sınıfının nesnesini oluşturmak için App.config dosyasında yer alan bağlantı dizesini kullanarak veritabanına bağlanmamız gerekmektedir. Ayrıca, DataContext sınıfı nesnesi, IDisposable arayüzünü uyguladığı için using bloğu ile kullanılması tavsiye edilir.

Veri eklemek ise oldukça basittir. DataContext sınıfının nesnesi üzerinde yer alan tablo nesnesine yeni bir kayıt eklemek için InsertOnSubmit metodu kullanılır. InsertOnSubmit metodu, veritabanında yer alan tablo nesnesine yeni bir entity eklememizi sağlar. Bu entity, normal bir nesne gibi oluşturulur ve tablo nesnesinin AddNew metodu ile eklenecek entity'nin özelliklerine değerler atanır.

Örnek veri ekleme işlemi kod bloğu:

using (DataClasses1DataContext db = new DataClasses1DataContext()){   Müsteriler newCustomer = new Müsteriler();   newCustomer.CustomerID = "011";   newCustomer.ContactName = "Ahmet Yılmaz";   newCustomer.CompanyName = "Yılmaz Group";   db.Müsterilers.InsertOnSubmit(newCustomer);   db.SubmitChanges();}

Yukarıdaki kod bloğunda, Müsteriler tablosuna yeni bir kayıt ekledik. Yapmamız gereken tek şey, yeni bir Müsteriler nesnesi oluşturmak ve nesnenin özelliklerine değerler atamak. Daha sonra, DataContext sınıfının nesnesi üzerinde yer alan Müsteriler tablosuna InsertOnSubmit metodu ile yeni kaydı ekledik ve SubmitChanges metodu ile işlemi tamamladık. Bu sayede, veri ekleme işlemimizi başarılı bir şekilde gerçekleştirdik.


InsertOnSubmit Metodu

LINQ to SQL ile veritabanına yeni bir kayıt eklemek, InsertOnSubmit metodu kullanılarak kolayca yapılabilmektedir. Bu metot, bir nesne koleksiyonu içinde belirtilen bir varlık nesnesini tutarak, varlık koleksiyonuna yeni bir kaydın eklenmesini sağlar. Bu yöntem, System.Data.Linq.Table sınıfından türetilen bir nesnede mevcuttur. InsertOnSubmit metodu kullanılarak bir kayıt eklendiğinde, o kaydın veritabanına gönderilmesi gerekmektedir. Ancak, veritabanı değişiklikleri SubmitChanges yöntemi ile kaydedilene kadar gerçekleşmez. Bu nedenle InsertOnSubmit yöntemi, veritabanına kayıt ekleme işlemini yalnızca bellekte tutar ve herhangi bir değişikliği veritabanına göndermek için SubmitChanges yöntemi çağrılana kadar bekletir.

InsertOnSubmit yöntemi, eklemek istediğimiz varlığı temsil eden bir nesne örneği alır. Bu nesne, veritabanındaki tablonun türüne uygun olmalıdır. Eklemek istediğimiz varlığı oluşturduktan sonra, InsertOnSubmit yöntemi kullanılarak veritabanına kaydı ekleyebiliriz. Aşağıdaki örnek kod parçası, InsertOnSubmit yöntemi ile yeni bir kaydın veritabanına nasıl ekleneceğini göstermektedir:

using (SamplesDataContext context = new SamplesDataContext()){    // yeni bir müşteri objesi oluşturuluyor    Customer newCustomer = new Customer    {        CustomerName = "Yeni Müşteri",        ContactName = "Yeni İletişim Kişisi",        Country = "Türkiye"    };    // müşteri tablosuna yeni müşteri kaydı ekleniyor    context.Customers.InsertOnSubmit(newCustomer);    // veritabanına değişiklikleri kaydetme işlemi yapılıyor    context.SubmitChanges();}

Yukarıdaki kod örneği, SamplesDataContext sınıfından bir nesne oluşturarak, yeni bir müşteri kaydı eklemektedir. InsertOnSubmit yöntemi kullanılarak yeni bir müşteri nesnesi oluşturuluyor ve daha sonra context.Customers.InsertOnSubmit metodu ile bu nesnenin Customer tablosuna eklenmesi sağlanıyor. Son olarak, veritabanındaki değişiklikler SubmitChanges yöntemi kullanılarak kaydediliyor.

InsertOnSubmit yöntemi, LINQ to SQL kullanarak veritabanına kayıt ekleme işleminin en kolay ve hızlı yollarından biridir. Bu yöntem, hızlı bir şekilde veritabanına yeni kayıtlar eklememizi sağlar.


SubmitChanges Metodu

SubmitChanges metodu, LINQ to SQL'de veri ekleme işlemi sonrası değişiklikleri kaydetmek için kullanılır. Bu metot, InsertOnSubmit ve DeleteOnSubmit metotları gibi, DataContext sınıfının bir metodu olarak kullanılır. Yaptığımız değişiklikleri veritabanına kaydetmek için SubmitChanges metodunu kullanırız.

Bu metodun kullanımı oldukça kolaydır. Sadece DataContext nesnesi üzerinden SubmitChanges metotunu çağırmamız yeterlidir. LINQ to SQL, bu metodu kullanarak tüm ilgili değişiklikleri ve işlemleri takip eder, ilgili tablolarda güncelleme, ekleme ve silme işlemlerini gerçekleştirir.

Ayrıca bu yöntem, veritabanındaki verileri etkileyen diğer işlemleri de takip eder. Örneğin, bir kaydı güncellerken, bu kaydın ilişkili olduğu diğer tablolardaki kayıtların güncellenmesini de sağlar.

SubmitChanges metodu, işlem sırasında hatalarla karşılaşılırsa, hataları yakalar ve bu hatalar hakkında bilgi verir. Bu sayede, hata oluştuğunda kullanıcıya hata mesajları gösterilebilir ve uygulama daha sağlam hale getirilebilir.

Sonuç olarak, LINQ to SQL'deki SubmitChanges metodu, veri ekleme işlemi sonrası oluşan değişiklikleri kaydetmek için kullanılır. Bu metodun kullanımı oldukça basittir ve veritabanında güncelleme, ekleme ve silme işlemlerini gerçekleştirmesiyle, LINQ to SQL'nin en kullanışlı metotlarındandır.


Veri Güncelleme

LINQ to SQL, veritabanında var olan verilerin güncelleştirilmesi işlemini kolaylaştırır. İşlem, iki adımda tamamlanabilir. İlk adımda güncellenecek olan veri belirlenir ve ikinci adımda yapılacak olan değişiklikler yapılır. LINQ to SQL kullanarak, bir kaydı tek adımda değiştirme veya varsayılan değerlere sahip bir nesneyi kullanarak birçok kaydı aynı anda değiştirme seçeneğine sahipsiniz.

Bir veriyi güncellemek için önce kaydı seçmeniz gerekir. Örneğin, bir kullanıcının ismi veya adresi değiştiyse, öncelikle kullanıcının ID'sini aramanız ve değiştirmek istediğiniz alanı seçmeniz gerekir. Bu işlem için Update metodu kullanılır. Bu metot, veritabanındaki kaydı etkileyen değişiklikleri yapabilmeniz için nesneyi seçmenize olanak tanır. Örneğin, aşağıdaki kod bloğunda, Products tablosundaki ID'si 5 olan ürünün adını güncellemek için Update() metodu kullanılır.

using (var db = new ProductDataContext()){    var product = db.Products.SingleOrDefault(p => p.Id == 5);    if (product != null)    {        product.Name = "Yeni Ürün Adı";        db.SubmitChanges();    }}

Attach metodu, var olan bir nesneyi LINQ to SQL'de bulunan var olan bir kayda bağlamak için kullanılır. Önceden tanımlanmış bir nesneyi kullanarak, bu kaydın değiştirilmesi için hazır hale getirilebilirsiniz. Bu yöntem, bir kayıtta yapılan tüm değişiklikleri bir arada tanımlamanıza olanak tanır. Bu, SubmitChanges() yöntemiyle kaydı güncellemenizi sağlar.

Yukarıdaki Update() yöntemine benzer bir şekilde, Attach() yöntemi tanımlanmış bir nesne kullanılarak çağrılır. Örneğin, aşağıdaki kod bloğunda, ProductDataContext sınıfındaki Products tablosundaki ID'si 5 olan ürün güncellenir:

using (var db = new ProductDataContext()){    var product = new Product { Name = "Yeni Ürün Adı", Id = 5 };    db.Products.Attach(product, true);    db.SubmitChanges();}

Bu örnekte, var olan bir nesneye ("product") sahibiz ve Attach() yöntemi kullanılarak VAR olan bir kayda ("Id=5") bağlandı. İkinci parametre "true" ise, var olan kaydın alanlarının tümünün değiştirildiğini söyler. In general, this is necessary because the SubmitChanges() method requires all changes to be present before it makes any updates.

Bu basit örnekler, LINQ to SQL kullanarak veritabanında var olan verilerin güncellenmesinin nasıl yapılacağına dair temel bir kavrayış sağlar.


Update Metodu

LINQ to SQL kullanarak veritabanında var olan bir kaydı güncellemek oldukça basit bir işlemdir. Bu işlemi gerçekleştirmek için Update metodu kullanılır. Update metodu, belirtilen verilerin güncellenmesi için bir SQL sorgusu oluşturur ve ardından bu sorguyu veritabanına gönderir.

Update metodu kullanırken öncelikle güncellenmesi gereken tabloyu belirtmek gerekir. Bunun için DataContext içerisinde yer alan ilgili tablo nesnesine erişmek yeterlidir. Tablo nesnesine erişildikten sonra sıra güncelleme işlemini gerçekleştirmeye gelir.

Güncelleme işlemi için Update metodu iki adet parametre alır. İlk parametre, güncellenmesi gereken kaydın bulunacağı koşulu içerir. İkinci parametre ise güncelleme işlemi için kullanılacak verileri içerir.

Örneğin, öğrenci adı "Ali" olan bir kaydın öğrenci adını "Ahmet" olarak güncellemek için şu kod parçası kullanılabilir:

```csharpusing (DataContext context = new DataContext(connectionString)){ var ogrenci = context.Ogrenciler.Where(o => o.Adi == "Ali").FirstOrDefault(); if (ogrenci != null) { ogrenci.Adi = "Ahmet"; context.SubmitChanges(); }}```

Yukarıdaki kod parçasında, öncelikle DataContext nesnesi oluşturulur ve öğrenci tablosuna erişilir. Daha sonra Adi özelliği "Ali" olan kayıt sorgulanır ve eğer bulunursa Adi özelliği "Ahmet" olarak güncellenir ve SubmitChanges metodu ile değişiklikler kaydedilir.

Update metodu kullanırken dikkat edilmesi gereken bir diğer nokta ise, kaydın güncellenirken sadece ilgili alanların güncellenmesidir. Eğer diğer alanlar da güncellenecekse bu alanların da değerleri Update metodu içerisinde belirtilmelidir. Aksi takdirde diğer alanların değerleri NULL olarak değişecektir.


Attach Metodu

Attach metodu, LINQ to SQL kullanarak var olan bir kaydı güncelleme işlemi için hazır hale getirmek için kullanılır. Eğer bir kaydı güncellemek istiyorsanız, bu kaydı kullanan tüm nesneleri yeniden oluşturmanıza gerek kalmadan Attach metodunu kullanarak veritabanında yer almasını sağlayabilirsiniz.

Attach metodu, var olan bir kaydın DataContext nesnesine eklenmesini sağlar ve bu sayede bu kaydın değiştirilip veritabanına kaydedilmesi için hazırlanması mümkün hale gelir. Bu, birçok durumda oldukça yararlıdır, özellikle bir veya daha fazla satırı güncellemeniz gereken durumlarda çok faydalıdır.

Attach metodu kullanmanın temel mantığı, DataContext nesnesi içinde yer alan veritabanı tablosunu çağırarak, güncellenmesini istediğiniz nesneyi yeni bir değişkene tanımlamaktır. Bu değişken daha sonra Attach metodu ile veritabanına bağlanabilir ve değişiklikler kaydedilebilir.

Aşağıdaki örnek Attach metodu kullanarak var olan bir kaydı güncellemeyi gösteriyor:

Kolon Adı Tipi
Id int
Name string
Age int

Yukarıdaki tablodaki örneğimizde "Id" değeri 1 olan bir kayıt olduğunu varsayalım ve bu kaydı güncellemek istiyoruz. DataContext nesnesinin "testDataContext" olduğunu varsayalım ve güncellenecek olan verinin aşağıdaki değişkenler tarafından saklandığı düşünülsün:

int id = 1;string name = "Test User";int age = 35;

Bu verileri kullanarak Attach metodunu aşağıdaki gibi kullanabilirsiniz:

var updatedData = new testTable { Id = id, Name = name, Age = age };testDataContext testDb = new testDataContext();testDb.testTables.Attach(updatedData, true);testDb.SubmitChanges();

Yukarıdaki kod, DataContext nesnesindeki "testTables" tablosunda Id değeri 1 olan bir kaydı değiştirir. Veriler Attach metodu kullanılarak DataContext'e bağlanır ve veritabanına kaydedilen değişiklikler SubmitChanges metodu kullanılarak uygulanır.


Veri Silme

LINQ to SQL kullanarak veritabanında var olan verilerin silinmesi işlemleri oldukça kolay ve hızlıdır. Veri silme işlemleri için DeleteOnSubmit() metodu kullanılır. Bu metot sayesinde LINQ to SQL’de kaydı silinecek verinin varlığı kontrol edilir.

Silme işlemi gerçekleştiğinde değişiklikler SubmitChanges() metodu ile kaydedilir. Böylece veritabanındaki kayıtlar üzerinde yapılan silme işlemi doğrulandıktan sonra kalıcı hale gelir.

Veri silme işlemi yaparken, öncelikle hangi verinin silineceği belirlenmelidir. Bu işlem için LINQ sorgusu kullanılabilir. LINQ metotları kullanarak istenen veriler filtrelenir ve varlığı kontrol edildikten sonra DeleteOnSubmit() metodu ile güncellenir.

Başka bir yöntem olarak veri silmek için gelen parametrelere göre ilgili kaydı veritabanından çekilebilir ve ardından DeleteOnSubmit() metodu ile silinebilir. Bu yöntem sadece tek bir kayıt silerken, performans bakımından daha hızlı olabilir.

Yukarıdaki işlemler tamamlandıktan sonra SubmitChanges() metodu ile kayıtlar kalıcı hale getirilir ve veri silme işlemi başarıyla tamamlanmış olur. LINQ to SQL kullanarak veri silme işlemleri oldukça kolay ve hızlıdır, bu nedenle büyük projelerde veritabanındaki verilerin hızlı bir şekilde güncellenmesi, düzenlenmesi veya silinmesi için kullanılabilir.


DeleteOnSubmit Metodu

LINQ to SQL DeleteOnSubmit metodu, veritabanında var olan bir kaydın silinmesi işlemi için kullanılır. Bu işlemde, öncelikle silinecek kaydın nesnesi oluşturulur ve daha sonra bu nesne DeleteOnSubmit metodu ile silme işlemi için hazır hale getirilir.

Örneğin, bir kullanıcının hesabının silinmesi için önce o kullanıcının nesnesi oluşturulur ve daha sonra bu nesne DeleteOnSubmit metodu kullanılarak silinmek üzere ayarlanır. Bu işlem için öncelikle DataContext sınıfından bir örnek alınmalıdır.

```csharpDataContext context = new DataContext(connectionString);```

Daha sonra, silinecek kaydın nesnesi oluşturulur ve DeleteOnSubmit metodu ile silinmek üzere ayarlanır.

```csharpUser user = context.Users.Where(u => u.Id == 5).FirstOrDefault(); context.Users.DeleteOnSubmit(user);```

Bu işlemde, Users tablosundan Id'si 5 olan kullanıcının nesnesi oluşturulur ve DeleteOnSubmit metodu ile silinmek üzere ayarlanır.

Son olarak, SubmitChanges metodu çağrılarak veritabanındaki değişiklikler kaydedilir.

```csharpcontext.SubmitChanges();```

Bu işlem sayesinde Users tablosundaki Id'si 5 olan kullanıcının verileri silinerek veritabanındaki değişiklikler kaydedilir.

LINQ to SQL DeleteOnSubmit metodu sayesinde, veritabanında var olan kayıtların silinmesi işlemi kolaylıkla gerçekleştirilebilir. Ancak, bu işlem öncesinde verinin geri dönüşü olmadığı unutulmamalı ve dikkatli bir şekilde yapılmalıdır.


SubmitChanges Metodu

LINQ to SQL ile veri silme işlemi gerçekleştirdikten sonra DeleteOnSubmit metodu, değişiklikleri geçerli kılması için SubmitChanges metoduyla birleştirilir. SubmitChanges metodu, yapılan değişiklikleri veritabanında kalıcı hale getirmek için kullanılır. Veri silme işlemi sonrası gerçekleştirilen SubmitChanges metodu sayesinde, veritabanında yapılan değişiklikler kalıcı hale getirilir.

Veri silme işlemi sonrası, SubmitChanges metodu kullanmadan önce bir kontrol yapmak önemlidir. Veritabanında bir kayıt ya da ilişkili farklı bir tabloda silinmesi gereken bir kayıt varsa, silme işlemi gerçekleştirilmeden önce bu kontrolün yapılması gerekmektedir.

Veri silme işlemi sonrası, SubmitChanges metodu çağrılmadan önce gerçekleştirilen değişiklikler, önbelleğe kaydedilir. SubmitChanges metodu, veritabanındaki gerçek tablolara bu değişiklikleri uygular. Eğer bir hata veya çakışma meydana gelirse, SubmitChanges metodu işlemi geri alır ve önbellekteki değerleri eski haline getirir.

Bu işlem sonrası, veri silme işlemi gerçekleştirilmiş olacak ve veritabanına kaydedilmiş olacaktır. LINQ to SQL kullanarak gerçekleştirilen işlemler için SubmitChanges metodu oldukça önemlidir, çünkü gerçekleştirilen işlemlerin veritabanında kalıcı olmasını sağlar.