LINQ Son Eklenen Kayıtın ID’sini almak

by Alper KOCA 26. Temmuz 2009 11:37

Uzun zamandır yazı yazamıyordum. Dün eklediğim bir verinin idsini geri almam lazımdı. Hani bildiğim bir yöntem olarak ekle sonra eklediğin parametrelerle geri çağır ve istediğin ID’yi geri al. Bu yöntemi denicektim ama öncesinde acaba LINQ bana bir kolaylık sağlamışmı diye merak ettim ve ufak bir deneme yaptım ve deney başarılı oldu :)

linq

Kullandığım table’ım yukardaki. Şimdi buna bir veri ekleyelim ve sonrasında eklediğim verinin id’sini isteyelim.

static void Main(string[] args)
{
    DataClasses1DataContext context = new DataClasses1DataContext();
    user u = new user();
    u.name = "Alper";
    u.surname = "KOCA";
    u.user_name = "alperkoca";
context.users.InsertOnSubmit(u); context.SubmitChanges(); }

Yukarıdaki kod ile ekleme işlemini yapıyoruz.

Eklediğimiz verinin id’sini alabilmek için tek yapmamız gereken SubmitChanges() metodundan sonra eklediğimiz nesnenin ID’parametresini çağırmamız olacak.

static void Main(string[] args)
{
    DataClasses1DataContext context = new DataClasses1DataContext();
    user u = new user();
    u.name = "Alper";
    u.surname = "KOCA";
    u.user_name = "alperkoca";
    context.users.InsertOnSubmit(u);
    context.SubmitChanges();
    int id = u.ID;
}

 

linq1

Tags: , , , ,

LINQ

LINQ Birden çok veri ekleme ve silme işlemi

by Alper KOCA 9. Haziran 2009 20:56

Bugün yazdığım LINQ Insert, Update, Delete makalemde verilerimizi tek tek eklemeyi ve silmeyi görmüştük. Şimdi ise size toplu ekleme ve toplu silme olaylarından bahsedecem.

İlk başta verilerimiz veritabanımıza kaydedelim.

yine bir önceki tablomla çalışacam.

user[] alper = { 
                    new user() { name = "alper", surname = "koca", user_name = "alperkoca" },
                    new user() { name = "alper", surname = "koca", user_name = "alperkoca" },
                    new user() { name = "alper", surname = "koca", user_name = "alperkoca" },
                    new user() { name = "alper", surname = "koca", user_name = "alperkoca" },
                    new user() { name = "alper", surname = "koca", user_name = "alperkoca" },
                    new user() { name = "alper", surname = "koca", user_name = "alperkoca" } };

İlk başta user nesnemin dizisini oluşturdum ve içerisine bir kaç veri ekledim. Şimdi bunu eklemeye çalışalım. Bir önceki makalemde InsertOnSubmit() metodunu kullanmıştık bu sefer ufak bir değişiklik yapacaz ve başka bir metodumuz olan InsertAllOnSubmit() metodunu kullanacaz.

context.users.InsertAllOnSubmit(alper);
context.SubmitChanges();

Sonrada değişiklikleri veritabanımıza kaydetmesini söylicez. Tüm veriler kısaca veritabanımıza eklenmiş oldu. Artık sıra bunları silmeye geldi :)

Silme işleminde ilk olarak hangi verileri sileceğimizi veritabanımızdan istememiz gerekiyor. Bunun için

var uyeler = from u in context.users where u.name == "alper" select u;

Sorgusuyla uyeler değişkenine verilerimizi yükledik. uyeler değişkenimizde artık insert ile eklediğimiz 6 tane verimiz var. İstersek bunları geçen makalemde yaptığım gibi silerbiliriz. foreach kurarız ve tek tek silebiliriz. Bu iş biraz uzun :( Tek satır kod yazmak varken neden işimi 5 satıra çıkarim ? işte bunun için imdadıma DeleteAllOnSubmit() metodum yetişti ve beni kurtardı :)

context.users.DeleteAllOnSubmit(uyeler);
context.SubmitChanges();

artık tüm verilerimiz geri silindi hemde 3 satır kod ile :)

Tags: , , , ,

LINQ

LINQ Insert, Update, Delete

by Alper KOCA 9. Haziran 2009 13:05

LINQ çalıştığımı ve bununla ilgili yazılar yazacağımı önceki yazılarımda söylemiştim. Şimdi bu yazdıklarımın arkasında durarak LINQ ile Insert, Update, Delete işlemlerinin nasıl yapıldığına tek tek bakalım.

insert_update_delete

Kullanacağım tablom yukarıdaki gibi bunun üzerinde işlemler yapacaz.

INSERT

Insert yapabilmek için ilk başta insert yapacağımız veri lazım. Bunun için user nesnemi oluşturmam gerekiyor.

user Alper = new user();

Sonrasında da değerlerini girmem gerekiyor.

Alper.name = "Alper";
Alper.surname = "KOCA";
Alper.user_name = "alperkoca";

Yukarıda yaptığım işlemi tek satırda da C# 3.0 özelliğini kullanarakta yapabilirdim.

user Alper = new user() { name = "Alper", surname = "KOCA", user_name = "alperkoca" };

şeklinde yapmamda mümkün. Ama sonuçta benim için önemli olan user nesnemi oluşturmam ve değerlerini ayarlamam. Şimdi de benim bu yaptığım nesnemi DataContext’ime eklemem ve değişiklikleri veritabanıma aktarmam lazım.

context.users.InsertOnSubmit(Alper);
context.SubmitChanges();

ve yukarıdaki kod bu işleri benim yerime yapıyor.

DataClasses1DataContext context = new DataClasses1DataContext();
private void Form1_Load(object sender, EventArgs e)
{
    user Alper = new user() { name = "Alper", surname = "KOCA", user_name = "alperkoca" };
    context.users.InsertOnSubmit(Alper);
    context.SubmitChanges();
}

Kısa bir kod parçasıyla işimizi hallettik.

UPDATE

Update işleminde biraz bir farklılık var. Aslında işlem aynı ama Update’te bize hangi veriyi güncellememiz lazım onu veritabanımızdan almamız lazım bunun içinde bir LINQ sorgusu yazıp database'imizden verimizi alamız lazım.

user alper = (from u in context.users where u.name == "Alper" select u).SingleOrDefault();

LINQ sorgumuzla tek verimiz user sınıfımızın Alper isimli nesnesine atıyoruz. Bundan sonra Alper nesnemiz üzerinde işlemlerimizi yapıyoruz.

alper.name = "aLPER";
alper.surname = "koca";
alper.user_name = "ALPERKOCA";

istediğimiz gibi değişikliğide yapalım. Artık bunu veritabanımıza uygulayalım.

context.SubmitChanges();

Artık verimizi güncellemiş olduk.

DataClasses1DataContext context = new DataClasses1DataContext();
private void Form1_Load(object sender, EventArgs e)
{
     user alper = (from u in context.users where u.name == "Alper" select u).SingleOrDefault();
     alper.name = "aLPER";
     alper.surname = "koca";
     alper.user_name = "ALPERKOCA";
     context.SubmitChanges();
}

İşte buda bukadar :)

DELETE

Delete işlemini de yukarda anlattıklarımızdan yola çıkarak yapabiliriz. Sileceğimiz veriyi veritabanımızdan bulacağız ve sileceğiz. Hadi bunuda yapalım.

user alper = (from u in context.users where u.name == "Alper" select u).SingleOrDefault();

Yazdığımız kod ile alper nesnemize sileceğimiz nesneyi seçiyoruz. Şimdi de bunu silelim.

context.users.DeleteOnSubmit(alper);
context.SubmitChanges();

ve silme işlemimizi de tamamlamış olduk.

DataClasses1DataContext context = new DataClasses1DataContext();
private void Form1_Load(object sender, EventArgs e)
{
    user alper = (from u in context.users where u.name == "Alper" select u).SingleOrDefault();
    context.users.DeleteOnSubmit(alper);
    context.SubmitChanges();
}

Veri tabanımızda yapabilceğimiz işler bunlarla sınırlı değil ama şimdilik bunlar bir çok işimizi görecektir. Zaman buldukça diğer işlemlerin nasıl yapıldığına değinecem.

Tags: , , , ,

LINQ

101 LINQ Örneği

by Alper KOCA 6. Haziran 2009 22:56

LINQ’e daha çalışıyorum tam olarak bilmiyorum ama sıkıştığımda şu özellik nasıl kullanılıyordu dediğimde baktığım ve sizinle paylaşmak istediğim bir site var. MSDN’den nasıl kullanıldığına bakabiliyoruz ki zaten vereceğim sitede MSDN sitesi ama olsun yinede elinizin altında bulunsun :)

 101 LINQ Samples girip bakmanızı LINQ’i denemenizi tavsiye ederim.

Tags: , ,

LINQ

LINQ to SQL Inner Join

by Alper KOCA 25. Nisan 2009 12:58

Geçende bir projem için SQL’de olan inner join yapısının LINQ’de nasıl yapılacağını araştırdım. Bağlamak istediğim tablolar aşağıdaki gibiydi.resim1

Senaryomda bir yazara ait birden fazla makalenin bulunabilmesiydi. ADO.NET ve SQL sorgularıyla önceden bunu çok rahat yapabileceğimi düşünürken LINQ’i öğrenince büyük bir eziyet çektiğimi anladım ve LINQ’de bu işi yapmaya karar verdim.

LINQ to SQL Class’ımı oluşturduktan sonra iki tabloyuda Server Explorer’dan sürükleyip oluşturduğum DataContext’e bıraktım.

resim2

Sonrada sayfamın arkasına aşağıdaki kodları yazdım.

resim3

İstediğimi yapmıştım ama aklıma takılan bazı noktalar vardı onları araştırmadan yapamadım ve join sözcüğünü kullanmadan da bunun yapılabileceğini buldum. Peki ya nasıl?

Oluşturduğum DataContext’in toolbox’ında resim4 diye bir özellik var onu kullanarak daha kolay yapabiliyorsunuz.

Seçtikten sonra Yazar tablosundan Makale tablosuna bir ok çiziyorsunuz. Sonrada karşınıza Association Editor paneli geliyor.

resim5

 

Association Properties bölümünden hangi alanlarımızı eşitlemek istiyorsak seçiyoruz ve OK butonuna basıyoruz.

resim7

Artık kod tarafımıza geçebiliriz. Kod olarakta aşağıdaki kodları yazdığımızda

 

resim8

gördüğünüz gibi intellisense’imizde tüm ilişkili tablolarımızın verileri geldi. Hiç join yazmadan bu işlemi yapabildik.

Başka yollarda vardır muhakkak ama ben bu son yolu çok sevdim ve bunu görünce de azım açık kalmıştı :D

hiç sorgu ve parametrelerle uğraşmadan direk tablo class’ımızı oluşturmak ne hoş dimi :)

Tags: , , , ,

LINQ

Powered by BlogEngine.NET 1.6.1.0 - FunkyGrunge Theme by n3o Web Designers

 

Alper KOCA

Alper KOCA
Çukurova Üniversitesi Bilgisayar Mühendisi
3. Sınıf Öğrencisi
Microsoft Student Partner